首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jmf播放视频

使用jmf播放视频
EN

Stack Overflow用户
提问于 2012-06-19 16:26:13
回答 1查看 13.1K关注 0票数 2

我正在尝试使用JMF播放视频文件,但它给了我No Media Player found exception

这是我的代码,有人能告诉我我哪里做错了吗?

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-19 16:42:32

您要播放的是哪种类型的视频?JMF是一个相当旧的库,不能播放大多数现代视频格式,只能播放一些旧格式(我甚至不确定是哪种)。

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

如果你真的想拥有像可调视频播放器这样的东西,可以播放任何现代视频,有两个选择(在我看来):

  1. 使用vlcj库将VLC视频播放器嵌入到Java-application
  2. USe JavaFX media player

我之所以只提供这两个库,是因为不久前我翻遍了大量的库,没有任何其他库与这两个库接近。此外,大多数其他库以及JMF本身都过时了,这两个库都得到了频繁的更新,并得到了大量用户的支持,因此这两个库是最佳选择。

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

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

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

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11097174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档