运行 命令行应用程序时 JavaFX 8 视频播放冻结

JavaFX 8 video playback freeze when running application from command line

当我从 Eclipse 运行 这个 JavaFX 8 应用程序(视频播放测试)IDE 时,一切都很好。应用程序 运行 视频无限循环播放。 但是当我从命令行 运行 这个应用程序时:

java -jar test-javafx8-video-playback-jar-with-dependencies.jar

它只是播放了几秒钟,然后停止播放。 这是一个应用程序源代码: test-javafx8-video-playback

请指教,谢谢

好的,这是播放视频的代码片段:

private void playBallMixingAnimation() {
    Media media = new Media(KenoKaironMain.getResourceURIFromProperties(KenoKaironMain.BALL_MIXER_URI_KEY));
    MediaPlayer mediaPlayer = new MediaPlayer(media);
    mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
    mediaPlayer.setMute(true);
    mediaPlayer.setAutoPlay(true);
    animMediaView.setMediaPlayer(mediaPlayer);
}

正如我所说,它在 Eclipse 中无限循环工作,但当我从命令行启动应用程序时却不行。 Eclipse 使用的是 jdk1.8.0_51 并且 Windows/OSX 使用的是 jre1.8.0_51 我有足够的内存来运行这个小应用程序。

这是我的发现。

一切都是关于支持的媒体格式。 您可能知道 JavaFX 支持以下视频格式:

  1. 带有 MP3 和 VP6 的 FLV 容器

  2. 带有 AAC、H.264 或两者的 MPEG-4 容器

只有使用 On2 的 VP6 编码的 FLV 视频文件才能无限循环播放,无论是从 Eclipse IDE 还是从命令行启动。

带有 AAC 或 H.264 的 MPEG-4 容器只能在 Eclipse 中无限循环播放 IDE,并且在从命令行启动时会在第一次循环后冻结。

这是我使用 Oracle FLV 示例测试的:http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv and confirmed by using this FLV sample: http://www.mediacollege.com/video-gallery/testclips/20051210-w50s.flv

对于 MPEG-4,您可以自己尝试并确保它不会从命令行无限循环工作。

我的测试配置是: OS X 10.9.5、Java JDK 1.8.0_51、Eclipse Luna (4.4.1) 和我在上面发布的代码片段。