【问题标题】:playing video using jmf使用 jmf 播放视频
【发布时间】:2012-06-19 08:26:12
【问题描述】:

我正在尝试使用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

【问题讨论】:

标签: java swing video jmf


【解决方案1】:

你想播放什么样的视频? JMF 是一个相当古老的库,无法播放大多数现代视频格式,只有一些旧的(我什至不确定是哪些)。

实际上,如果我是对的,要播放特定的内容,您必须将自己的视频编码器编写/添加到 JMF 中,或者至少下载并使用现有的,这些通常已经过时了。

如果您真的想拥有可以播放任何现代视频的可调视频播放器,有两种选择(我认为):

  1. 使用vlcj 库将VLC 视频播放器嵌入到您的Java 应用程序中

  2. 使用 JavaFX media player

我只提供这两个,因为我前段时间浏览了大量的图书馆,而且没有其他任何东西可以接近这两个。此外,大多数其他库以及 JMF 本身都已过时,这两个库正在频繁更新,并得到大量用户的支持,因此这两个库是最佳选择。

如果您不介意将 Java FX 播放器嵌入到您的应用程序中 - 这可能是您的选择。

另一方面 - vlcj 很稳定并且很容易集成到 Swing 应用程序中(它不像 Java FX 那样硬,但在某些情况下 vlcj 可能更好)。

无论如何,选择什么是你的决定。

【讨论】:

  • 为臭死鱼(JMF)+1
  • @Mikle Garin 感谢您的回复,实际上我正在尝试使用 vlcj ...我的主要任务是从网络摄像机捕获实时视频流并在我的应用程序上显示视频...任何使用 vlcj 的建议或简单代码示例都会非常有帮助
  • @Ruby 好吧,实际上我不太擅长 vlcj - 很久以前在我自己的项目中使用过一次它,它对于简单的视频播放案例来说就像一个魅力(即使在非赢操作系统)。也许这个 (code.google.com/p/vlcj/wiki/Streaming) 特定教程和同一资源上的其他一些教程可能会帮助您开始使用 vlcj。
猜你喜欢
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
相关资源
最近更新 更多