Linux 中的 JavaFX WebEngine 视频播放

标签 java video javafx redhat codec

目前,我们在 Linux Redhat 6 环境中的 JavaFX 中的 WebViewer 开发中遇到了问题。使用 JavaFX 2.2 和 Java 1.7.0.51,我们有一个 WebViewer,可以转到其中包含视频标签的 HTML 页面。

它在我们的 Windows 机器上完美运行,但是在 Linux 机器上我们遇到以下异常:

Exception in thread "JavaFX Application Thread" java.lang.IllegalThreadStateException
    at java.lang.Thread.start(Thread.java:704)
    at com.sun.webpane.sg.prism.WCMediaPlayerImpl.prepareToPlay(WCMediaPlayerImpl.java:208)
    at com.sun.webpane.platform.graphics.WCMediaPlayer.fwkPrepareToPlay(WCMediaPlayer.java:290)
    at com.sun.webpane.platform.WebPage.twkProcessMouseEvent(Native Method)
    at com.sun.webpane.platform.WebPage.dispatchMouseEvent(WebPage.java:751)
    at javafx.scene.web.WebView.processMouseEvent(WebView.java:983)
    at javafx.scene.web.WebView.access$2600(WebView.java:81)
    at javafx.scene.web.WebView$14.handle(WebView.java:1136)
    at javafx.scene.web.WebView$14.handle(WebView.java:1134)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
    at javafx.event.Event.fireEvent(Event.java:171)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3369)
    at javafx.scene.Scene$MouseHandler.process(Scene.java:3209)
    at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3164)
    at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1582)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2267)
    at com.sun.javafx.tk.quantum.EmbeddedScene$2$1.run(EmbeddedScene.java:194)
    at com.sun.javafx.tk.quantum.EmbeddedScene$2$1.run(EmbeddedScene.java:176)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.EmbeddedScene$2.run(EmbeddedScene.java:176)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182)
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:89)
    at java.lang.Thread.run(Thread.java:744)

我会说显而易见的事情,似乎从 JavaFX 生成的线程在尝试加载视频时正在死亡。还有其他人遇到过这种性质的问题吗?关于尝试什么有什么想法吗?我们尝试过使用非常特定的 H-264 编解码器版本,但没有成功。关于如何设置 linux/javafx 环境以在 JavaFX WebView 中播放视频的任何想法也会有所帮助。

此外,需要澄清的是,该应用程序是带有嵌入式 JavaFX 的 Swing,但是它仍然出现在纯 JavaFX 实现中,略有不同的异常。

谢谢, 内森

更新:看起来我们可能没有正确安装编解码器。明天将更新答案以供将来引用。

最佳答案

看来我们没有在操作系统中正确内置任何/正确的编解码器,并且它必须是非常特定的编解码器版本。虽然配置不支持 Redhat 6.5,但它仍然可以按照发行版上宣传的那样工作。我们使用的编解码器是:libavcodec52 和 libavformat52,如下所述:http://www.oracle.com/technetwork/java/javafx/downloads/supportedconfigurations-1506746.html

令人遗憾的是,该异常没有解释真正出了什么问题。

关于Linux 中的 JavaFX WebEngine 视频播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23351657/

相关文章:

java - Jna,随机无效内存访问错误

java - Windows 找不到 rmi 注册表

image - 创建视频表单图像和视频并以编程方式向其中添加音频| Java、Python、ffmpeg

html 对象标签我们应该将类型指定为 video/mp4 来播放 mp4 视频吗?

java - 如何访问数组的通用数组列表中的元素

java - Spring MVC Hibernate 指定的 JDBC 驱动程序 oracle.jdbc.pool.OracleDataSource 无法加载错误

video - 如何使用最新版本的 FFMPEG 在视频录制中创建时间间隔?

java - 从 Controller 加载不同的 FXML 文件

java - 如何将 CSS 文件设置为整个应用程序 JavaFX

css - Javafx 中没有颜色方 block 的 ColorPicker?