HTTP实时流(HLS)无法正常运行Java FX 2.2.21

NotJo

如果我错过了其他地方的答案,我深表歉意,但是我在这里,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的媒体播放器(使用JPanels等)。我可以播放受支持格式的本地文件(例如Sintel Trailor mp4 h264),也可以播放受支持格式的远程文件(例如直接从oracle.com找到的FLV文件)。

问题:当我尝试使用“ HTTP实时流”(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和直接复制源代码并运行它...不幸的是,发生了相同的结果。“集成流媒体播放器”运行,但是仅显示空白视频窗口。可以使用媒体控件和滑块,但不能播放视频。(需要注意的是,该播放器可以在我的网络浏览器中使用,并且Rap视频太糟糕了。)

基于Java 2.2.7的发行说明,我的印象是支持HLS。由于担心我的假设是错误的,因此我尝试升级到独立的JavaFX 2.2.21,但这不能解决问题。结果是完全一样的。没有例外,没有错误,也没有视频。

我无法升级到Java 7(由于项目限制,我坚定地坚持使用Java 1.6.0.32),但是出于争论的原因,我尝试在Java 7上运行Ensemble媒体播放器代码,结果是相同的。

有人可以提供的任何帮助将不胜感激。

(对于SSCCE,您可以在上面的Oracle Streaming Media Player链接上查看我逐字尝试的代码。)

在此先感谢任何可以提供帮助的人!

NotJo

我的结论: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运行时,我运行了应用程序,一切正常。

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在 TextField 中乘以 2 位数字 - Java FX

来自分类Dev

为什么 ~-(2 + "2") 是 21?

来自分类Dev

无法在 Android < 21 中使用 Retrofit 2 连接到 HTTPS

来自分类Dev

如何结合m2e和e(fx)剪辑?

来自分类Dev

为什么:Math.floor(2e + 21)!= ~~(2e + 21)

来自分类Dev

均值(c(1,2,21))和均值(1,2,21)之间的差异

来自分类Dev

Apple的3/29/21 HTTP / 2证书更改需要哪些根CA证书?

来自分类Dev

Android API 21+ Camera2 API

来自分类Dev

UEFI TGC2 的 sendCommand 总是返回错误 21

来自分类Dev

导致SIGSEGV赛普拉斯fx2lp USB芯片的JNI线程

来自分类Dev

华硕TUF FX504GD有4个内存插槽,而不是2个

来自分类Dev

更新 Yii2 Fx-asset Compose 插件后出现 Jquery Nailthumb 错误

来自分类Dev

Java FX对象线图

来自分类Dev

Java的Fx的箭头按钮

来自分类Dev

Целочисленный массив отображения Java FX в TableView

来自分类Dev

Java FX如何跨行?

来自分类Dev

FadeIn动画无法正常运行2

来自分类Dev

IDE:e(fx)剪辑无法正常工作

来自分类Dev

无法安装e(fx)剪辑

来自分类Dev

为什么/ proc / cpuinfo在AMD FX-4100四核处理器上说“ cpu cores:2”

来自分类Dev

Java FX中的菜单错误

来自分类Dev

Java FX多Windows应用

来自分类Dev

Java FX中的鼠标滚动

来自分类Dev

Java FX 潜水整数属性

来自分类Dev

使用int 21h,2Ch显示系统时间

来自分类Dev

拨出时星号和A2Billing“ q931_disconnect_code_21”错误

来自分类Dev

libgit2引发了一个错误。类别= 21(MergeConflict)

来自分类Dev

拨出时星号和A2Billing“ q931_disconnect_code_21”错误

来自分类Dev

数据截断:错误的日期时间值:'04 / 10/2014 2:21 PM'

Related 相关文章

热门标签

归档