Linux中的JavaFX WebEngine视频播放
目前,我们在Linux Redhat 6环境下使用JavaFX开发WebViewer时遇到了一些问题。使用JavaFX2.2和Java1.7.0.51,我们有了一个WebViewer,它可以进入一个带有视频标签的HTML页面 它在我们的Windows设备上运行得非常好,但在linux设备上,我们遇到以下例外情况:Linux中的JavaFX WebEngine视频播放,java,video,javafx,redhat,codec,Java,Video,Javafx,Redhat,Codec,目前,我们在Linux Redhat 6环境下使用JavaFX开发WebViewer时遇到了一些问题。使用JavaFX2.2和Java1.7.0.51,我们有了一个WebViewer,它可以进入一个带有视频标签的HTML页面 它在我们的Windows设备上运行得非常好,但在linux设备上,我们遇到以下例外情况: Exception in thread "JavaFX Application Thread" java.lang.IllegalThreadStateException at
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编解码器版本,但没有成功。任何关于如何在JavaFXWebView中设置linux/javafx环境进行视频播放的想法都会很有帮助
另外,为了说明应用程序是使用嵌入式JavaFX进行Swing的,但是它仍然出现在纯JavaFX实现中,这与例外情况略有不同
谢谢,
内森
更新:看起来我们可能没有正确安装编码解码器。明天将更新答案以供将来参考 似乎我们没有在操作系统中正确地内置任何/正确的编解码器,它必须是编解码器的一个非常特定的版本。虽然配置不支持Redhat 6.5,但它仍然可以按照发行版上的广告工作。我们正在使用的编解码器是:libavcodec52和libavformat52,如下所述:
令人遗憾的是,这一例外没有解释到底出了什么问题 Red Hat 6不是JavaFX2支持的配置,而是一种新的配置。试试Java8,看看它是否有效。如果没有,请针对JavaFX运行时项目创建一个文件。现在看起来我们没有正确安装编解码器。谢谢您的回答!如果任何Arch Linux用户正在寻找解决方案,请查看以下内容: