2012-01-17 45 views
3

我有一個簡單的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

回答

7

您遇到編解碼器問題。

JavaFX FAQ question 7開始,JavaFX(截至2.0.2)僅支持使用on2 vp6 codec編碼的flv視頻。

其他編解碼器支持計劃用於將來的版本。相關的功能請求是RT-18296(需要登錄,但任何人都可以註冊查看JavaFX問題數據庫並創建功能請求,爲問題投票或發表評論)。

相關的StackOverflow問題提供了一個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