【问题标题】:JavaFX WebEngine Video Playback in LinuxLinux 中的 JavaFX WebEngine 视频播放
【发布时间】:2014-04-28 21:40:11
【问题描述】:

我们目前在我们的 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 编解码器版本,但没有奏效。关于如何在 JavaFX WebView 中为视频播放设置 linux/javafx 环境的任何想法也会有所帮助。

另外,为了澄清应用程序是带有嵌入式 JavaFX 的 Swing,但它仍然发生在纯 JavaFX 实现中,稍有不同的异常。

谢谢, 内森

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

【问题讨论】:

标签: java video javafx redhat codec


【解决方案1】:

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

很遗憾,该异常没有解释真正出了什么问题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多