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

在javafx应用程序中使用HTML5视频标记,java,html,webview,javafx,javafx-2,Java,Html,Webview,Javafx,Javafx 2,我有一个简单的javaFX应用程序,可以在WebViewcomponent中加载网页 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.setS

我有一个简单的javaFX应用程序,可以在
WebView
component中加载网页

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>

您的浏览器不支持视频标记。
该页面在Chrome16中工作,但在java应用程序中,您只能看到控件,单击play什么也不做。我假设WebEngine在控件出现时允许HTML5,并且
标记内的文本不会输出


谁能解释一下我做错了什么

您遇到了编解码器问题

从中,JavaFX(从2.0.2开始)仅支持使用编码的flv视频

计划在将来的版本中提供额外的编解码器支持。相关的功能请求是(需要登录,但任何人都可以注册以查看JavaFX问题数据库并创建功能请求、投票支持问题或发表评论)

一个相关的StackOverflow问题提供了一个示例(包括JavaFXWebView)

要演示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();
  }
}
导入javafx.application.application;
导入javafx.scene.scene;
导入javafx.scene.web.WebView;
导入javafx.stage.stage;
公共类WebViewVideo扩展应用程序{
公共静态void main(字符串[]args){Application.launch(args);}
@覆盖公共无效开始(阶段primaryStage){
WebView root=newwebview();
root.getEngine().loadContent(
"" +
"" + 
“您的浏览器不支持视频标记。”+
"");
初级阶段。设置场景(新场景(根,340260));
primaryStage.show();
}
}

尝试使用不同的编解码器提供第二个源。也许,所使用的编解码器不受支持。我已经尝试了几种不同类型的视频,结果都是一样的。我会带一个试试,但我不相信这是一个编解码器的问题。谢谢你的澄清!那么我想可以肯定地说JavaFX并不真正支持HTML5。HTML5本身不应该关心JavaFX能够/不能支持什么编解码器,而应该关心操作系统。幸运的是,与JavaFX2.1一样,现在支持H.264(MP4)视频,所以这让事情变得轻松多了。:)可以在视频标记中使用循环属性吗?当我使用loop属性时,它不会循环:(回答我的问题,它是我使用的JavaFX版本。我升级到Java8,一切正常。mp4视频工作,循环也可以。