Использование HTML5 тега видео в приложении javafx - PullRequest
3 голосов
/ 17 января 2012

У меня есть простое приложение javaFX, которое загружает веб-страницу в компоненте WebView.

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-приложении вы можете видеть только элементы управления, и нажатие кнопки play ничего не делает. Я предполагаю, что WebEngine позволяет использовать HTML5 в качестве элементов управления, а текст внутри тегов <video></video> не выводится.

Может кто-нибудь пролить свет на то, что я делаю неправильно?

1 Ответ

7 голосов
/ 18 января 2012

Вы столкнулись с проблемой кодека.

Из вопроса по JavaFX FAQ 7 , JavaFX (начиная с 2.0.2) поддерживает только FLV-видео, закодированные с использованием кодека on2 vp6 .

Дополнительная поддержка кодеков запланирована на будущие выпуски. Соответствующий запрос функции - RT-18296 (требуется вход в систему, но любой может зарегистрироваться, чтобы просмотреть базу данных проблем JavaFX и создать запросы функций, голосовать за проблемы или оставлять комментарии).

Соответствующий вопрос StackOverflow содержит краткое изложение соображений по воспроизведению видео в JavaFX 2.1 (включая JavaFX WebView).

Чтобы продемонстрировать тег видео html5 и воспроизведение видео в JavaFX WebEngine, запустите следующий код, который воспроизводит видео, закодированное с помощью vp6, предоставленное Oracle.

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();
  }
}
...