Debian Linux 中的 JavaFX MediaPlayer 异常

标签 java linux javafx debian gstreamer

我在让 JavaFX MediaPlayer 组件在 Debian Jessie 中播放内容(任何容器/编码类型的视频/音频文件)时遇到问题(与其他一些问题一样)。我已经尝试并用尽了该问题的任何潜在解决方案(我安装了 GLIB 2.28,我已将 Java 升级到 u60,我已确保所有编解码器包已安装,包括 libavcodec/libavformat/libavutil/等,我使用的是 gtk2 2.18+)。我不知道还能做什么或尝试什么。我有一个非常简单的应用程序,在 Windows 7 下运行得非常好

这是一个简单的应用程序:

public class MediaTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();

        Media media = new Media(new File("/path/to/file/test.flv").toURI().toString());
        MediaPlayer player = new MediaPlayer(media);
        MediaView view = new MediaView(player);

        root.setCenter(view);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("For the love of God, please work");
        primaryStage.setScene(scene);
        primaryStage.show();

        player.play();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

问题出现在 MediaPlayer 的创建上。经过几次长时间的调试 session 后,我发现内部生成的异常是 MEDIA_UNSUPPORTED 消息的某种排列,无论媒体类型或格式如何,尽管捕获的异常将其列为

MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player!

我已经尝试了几乎所有我能想到的方法。我有一个示例视频文件,它以各种可能的方式进行编码,并且位于无数不同的容器中。什么都不起作用。我有一个以几乎所有可能的方式编码的示例音频文件,具有相同的结果。

我是否能够让 MediaPlayer 在 Debian 上运行?如果是这样,那就太令人失望了。我知道让某些东西在 Windows、Mac 和 Linux 的每个发行版上运行几乎是不可能的,但“一次编写,到处运行”似乎不适用于 Java8。

编辑:我有oracle的java8,而不是openjdk。

<小时/>

编辑 2:内部错误似乎来自 gstreamer。 以下是进入 MediaException.getMediaException(Object source, int errorCode, String message) 的参数:

source    : com.sun.media.jfxmediaimpl.platform.gstreamer.GSTMedia
errorCode : 265
message   : ERROR_MEDIA_AUDIO_FORMAT_UNSUPPORTED

最佳答案

注意显卡驱动程序。例如,在Ubuntu 16.04中,AMD开源显卡驱动似乎不完整,javafx视频似乎不可能。

我让它在这个环境中工作: Ubuntu 14.04,intel 芯片组显卡,oracle jdk 8。 安装了 libavcodec54 和 libavformat54。不行(图形和声音都正常)。我的测试视频:http://www.sample-videos.com/video/flv/720/big_buck_bunny_720p_1mb.flv (容器:MP4/M4a,视频:H.264,声音:MPEG-4 AAC)

关于Debian Linux 中的 JavaFX MediaPlayer 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32145663/

相关文章:

linux - bash 上的脚本,可以吗?

java - 从表中选择行

java - 对于(对象对象 : list) [java] and index element

java - 如何以及在何处为鼠标悬停的 Fontawesomefx 图标设置 css 样式

java - 抛出未处理的异常后线程卡住

linux - Haskell:从/proc 读取。严格和懒惰的问题。过程统计

java - 删除数据库中没有的单词

linux - 将命令转换为 Linux 的 bash 脚本

java - JavaFX 中的 TableView 和 Spinner

JavaFX 线程卡住