Re: [問題] 取得影片的相關資訊
硬是把 event-driven 的東西轉成一般的 method call, 感覺有點醜 XD
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import javax.media.CannotRealizeException;
import javax.media.ConfigureCompleteEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.NoDataSourceException;
import javax.media.NoPlayerException;
import javax.media.NoProcessorException;
import javax.media.Processor;
import javax.media.control.TrackControl;
public class JMFExample {
public static Format getFormat(MediaLocator locator)
throws NoProcessorException, IOException {
final Processor processor = Manager.createProcessor(locator);
processor.configure();
final List fmts = new ArrayList();
processor.addControllerListener(new ControllerListener() {
@Override
public void controllerUpdate(ControllerEvent evt) {
if (evt instanceof ConfigureCompleteEvent) {
for (TrackControl o : processor.getTrackControls()) {
fmts.add(o.getFormat());
}
if (fmts.isEmpty()) {
fmts.add(null);
}
processor.close();
}
}
});
while (fmts.isEmpty()) {
try {
Thread.sleep(100);
} catch (InterruptedException ignored) {
}
}
return (Format) fmts.get(0);
}
public static void main(String[] args) throws NoPlayerException,
IOException, CannotRealizeException, NoDataSourceException,
InterruptedException {
MediaLocator locator = new MediaLocator(new URL(
"file:///home/qrtt1/JMF/MELT.MPG"));
// MPEG, 320x200, FrameRate=23.9, Length=96000
System.out.println(getFormat(locator));
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.54.197
推
04/09 09:47, , 1F
04/09 09:47, 1F
推
04/09 09:54, , 2F
04/09 09:54, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):