[英]playing video using jmf
我正在尝试使用JMF
播放视频文件,但No Media Player found exception
。
这是我的代码,有人可以告诉我我在这里做错了吗?
public class MediaPanel extends JPanel {
public MediaPanel(URL mediaURL) {
setLayout(new BorderLayout());
try {
Manager.setHint(Manager.LIGHTWEIGHT_RENDERER, true);
Player mediaPlayer = Manager.createRealizedPlayer(mediaURL);
Component video = mediaPlayer.getVisualComponent();
Component controls = mediaPlayer.getControlPanelComponent();
if (video != null)
add(video, BorderLayout.CENTER);
if (controls != null)
add(controls, BorderLayout.SOUTH);
mediaPlayer.start();
} catch (NoPlayerException noPlayerException) {
System.err.println("No media player found");
} // end catch
catch (CannotRealizeException cannotRealizeException) {
System.err.println("Could not realize media player");
} // end catch
catch (IOException iOException) {
System.err.println("Error reading from the source");
}
}
}
public class MediaTest {
public static void main(String args[]) {
// create a file chooser
JFileChooser fileChooser = new JFileChooser();
// show open file dialog
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) // user chose a file
{
URL mediaURL = null;
Player mediaPlayer = null;
try {
// get the file as URL
mediaURL = fileChooser.getSelectedFile().toURL();
} catch (MalformedURLException malformedURLException) {
System.err.println("Could not create URL for the file");
}
if (mediaURL != null) {
JFrame mediaTest = new JFrame("Media Tester");
mediaTest.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MediaPanel mediaPanel = new MediaPanel(mediaURL);
mediaTest.add(mediaPanel);
mediaTest.setSize(300, 300);
mediaTest.setVisible(true);
}
}
}
}
我得到的例外是No media player found
您要播放哪种视频? JMF是一个非常古老的库,将无法播放大多数现代视频格式,只能播放少数几种旧格式(我什至不知道哪种格式)。
实际上,如果我是对的,则要播放特定内容,您将必须将自己的视频编码器编写/添加到JMF中,或者至少下载并使用通常已经过时的现有视频编码器。
如果您真的想要像可调谐视频播放器这样的东西可以播放任何现代视频,则有两种选择(我认为):
我之所以只提供这两个,是因为一段时间前我已经浏览了数不胜数的图书馆,而没有什么比这更接近的了。 再加上大多数其他库以及JMF本身已经过时,这两个库的更新频率很高,并且得到许多用户的支持,因此这两个库是最佳选择。
如果您不介意将Java FX Player嵌入到您的应用程序中-这可能是您的选择。
另一方面-vlcj稳定且易于集成到Swing应用程序中(它不像Java FX那样难,但是vlcj在某些情况下可能会更好)。
无论如何,这是您的选择电话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.