Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux中的JavaFX WebEngine视频播放_Java_Video_Javafx_Redhat_Codec - Fatal编程技术网

Linux中的JavaFX WebEngine视频播放

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

目前,我们在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 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用户正在寻找解决方案,请查看以下内容: