【发布时间】:2014-09-06 00:53:57
【问题描述】:
如果我在其他地方错过了这个问题的答案,我深表歉意,但我在这里、Oracle 和网络上到处搜索,但找不到对我的问题的支持。
短篇故事:我编写了一个基于 JavaFX 2.2.7 的媒体播放器,已被证明可以播放支持的本地和远程视频文件,但不能播放 HTTP Live Streams。直接从 Oracle 尝试 SSCCE,升级到 JavaFX2.2.21,还尝试在 Java 7 JRE 中运行。 HTTP Live Streaming 不起作用。
背景故事:
我编写了一个嵌入在 Java 6 Swing 应用程序中的基于 JavaFX 2.2.7 的媒体播放器(使用 JPanel 等)。我可以播放支持格式的本地文件(例如 Sintel trailor mp4 h264),也可以播放支持格式的远程文件(例如直接来自 oracle.com 的 FLV 文件)。
问题: 当我尝试使用“HTTP Live Stream”(HLS)时,没有任何播放。将 HTTP Live Streaming URL 分配给 javafx.scene.media.Media 对象似乎不起作用。我最终得到一个空白播放器,但没有异常或错误。
我显然可以成功地从 HLS URL 实例化 Media 对象而不会出错:
private static final String MEDIA_URL = "http://download.oracle.com/otndocs/products/javafx/JavaRap/prog_index.m3u8";
Media media = new Media(MEDIA_URL);
MediaException ex = media.getError();
if( ex != null ) {
System.out.println("Media Error" + ex.getMessage());
} else {
System.out.println("No Media Error");
}
程序控制台输出:“无媒体错误”
我尝试过的故障排除步骤:
我认为我的播放器代码有问题,所以我去了http://download.oracle.com/otndocs/products/javafx/2/samples/Ensemble/index.html#SAMPLES/Media/Streaming%20Media%20Player 并直接复制了源代码并运行它......不幸的是,出现了同样的结果。 “Ensemble Streaming Media Player”运行,但只是显示一个空白的视频窗口。媒体控件和滑块可用,但没有视频播放。 (需要注意的是,播放器可以在我的网络浏览器中运行,而且说唱视频很糟糕。)
根据 Java 2.2.7 的发行说明,我的印象是支持 HLS。担心我的假设有误,我尝试升级到独立的 JavaFX 2.2.21,但这并没有解决问题。结果是完全一样的。没有异常,没有错误,也没有视频。
我无法升级到 Java 7(由于项目限制,我一直坚持使用 Java 1.6.0.32),但为了论证,我尝试在 Java 7 上运行 Ensemble 媒体播放器代码,结果是一样的.
如果有人能提供任何帮助,我们将不胜感激。
(对于 SSCCE,您可以在上面的 Oracle 流媒体播放器链接上逐字查看我尝试使用的代码。)
提前感谢任何可以提供帮助的人!
【问题讨论】:
标签: java video javafx-2 media-player http-live-streaming