【问题标题】:HTTP Live Streaming (HLS) not working Java FX 2.2.21HTTP 实时流 (HLS) 不工作 Java FX 2.2.21
【发布时间】: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


    【解决方案1】:

    我的结论:Http Live Streaming 不适用于 JavaFX 2.2.7 或 2.2.21 和 Java 1.6.0_32。

    我相信我已经证明问题出在 JavaFX 2.2.7 和 JavaFX 2.2.21 上,并且使用与 Jre7 捆绑在一起的新 JavaFX 可以解决问题。

    我创建了一个全新的项目,并将与 JRE 7 捆绑在一起的 JavaFX jar 文件添加到我的构建路径中。我从http://download.oracle.com/otndocs/products/javafx/2/samples/Ensemble/index.html#SAMPLES/Media/Streaming%20Media%20Player 复制了代码,它可以工作。

    所以我对我原来的 Java Eclipse 项目进行了一些修改。

    从构建路径中移除:

    • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\jfxrt.jar
    • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\javaws.jar
    • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\plugin.jar
    • C:\Program Files (x86)\Oracle\JavaFX 2.2 Runtime\lib\deploy.jar

    添加到构建路径:

    • C:\Program Files (x86)\Java\jre7\lib\jfxrt.jar
    • C:\Program Files (x86)\Java\jre7\lib\javaws.jar
    • C:\Program Files (x86)\Java\jre7\lib\plugin.jar
    • C:\Program Files (x86)\Java\jre7\lib\deploy.jar

    我仍然使用 Java 1.6.0_32 运行时,运行我的应用程序并且一切正常。

    当然,这感觉就像一个巨大的黑客。我对 JavaFX 2.2.7 的发行说明感到失望。

    注意:要将我的应用程序导出为可运行的 Jar,我还必须从 JRE 7 中提取与 JavaFX 相关的“.dll”库并将它们添加到 java运行 jar 之前的 .library.path(使用批处理脚本)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 2017-11-23
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多