在javafx应用程序中使用HTML5视频标签

问题描述:

我有一个简单的javaFX应用程序,它将一个网页加载到WebView组件中。在javafx应用程序中使用HTML5视频标签

StackPane root = new StackPane(); 
Scene scene = new Scene(root, 80, 20); 
browser = new WebView(); 
webEngine = browser.getEngine(); 

webEngine.load("test.html"); 
root.getChildren().add(browser); 
jfxPanel.setScene(scene); 

这工作正常,可以看到test.html。问题在于页面上的HTML5视频。

<video width="320" height="240" controls="controls"> 
    <source src="http://upload.wikimedia.org/wikipedia/commons/7/79/Big_Buck_Bunny_small.ogv" type="video/ogg" /> 
    Your browser does not support the video tag. 
</video> 

该页面在Chrome 16中工作,但在Java应用程序中,您只能看到控件并单击播放什么也不做。我假设WebEngine在控件出现时允许HTML5,并且<video></video>标签内的文本不会被输出。

任何人都可以阐明我做错了什么?

+0

尝试提供具有不同编解码器的第二个源。也许,使用的编解码器不被支持。 – 2012-01-17 18:11:10

+0

我试了几个视频,所有不同的类型,结果都一样。我会带着一个尝试,但我不相信它的编解码器问题。 – 2012-01-17 18:14:43

您遇到编解码器问题。

JavaFX FAQ question 7开始,JavaFX(截至2.0.2)仅支持使用on2 vp6 codec编码的flv视频。

其他编解码器支持计划用于将来的版本。相关的功能请求是RT-18296(需要登录,但任何人都可以注册查看JavaFX问题数据库并创建功能请求,为问题投票或发表评论)。

相关的*问题提供了一个summary of considerations for playing video in JavaFX 2.1(包括一个JavaFX WebView)。

要演示JavaFX WebEngine中的html5视频标签和视频播放,请运行以下代码,该代码播放Oracle提供的vp6编码视频。

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.web.WebView; 
import javafx.stage.Stage; 
public class WebViewVideo extends Application { 
    public static void main(String[] args) { Application.launch(args); } 
    @Override public void start(Stage primaryStage) { 
    WebView root = new WebView(); 
    root.getEngine().loadContent(
     "<video width='320' height='240'controls='controls'>" + 
     "<source src='http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv'/>" + 
     "Your browser does not support the video tag." + 
     "</video>"); 
    primaryStage.setScene(new Scene(root, 340, 260)); 
    primaryStage.show(); 
    } 
} 
+0

感谢您的澄清! – 2012-02-21 18:53:37

+0

然后我想可以肯定的说JavaFX并不真正支持HTML5。由于HTML5本身不应该关心JavaFX可以/不能支持的编解码器,而是操作系统。幸运的是,在JavaFX 2.1中,现在支持H.264(MP4)视频,所以这让事情变得更加痛苦。 :) – Glstunna 2012-04-18 20:42:43

+0

你可以在视频标签中使用loop属性吗?当我使用循环属性时,它不会循环:( – Someone13 2014-05-30 11:25:20