Воспроизведение Youtube-LiveStreams с JavaFX 8

У меня вопрос, можно ли воспроизводить Youtube-Livestream с использованием JDK 8u102. Используя WebView, можно легко воспроизводить Youtube-видео (VoD). Пример:

package application;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.web.WebView;
import javafx.stage.Stage;


public class Main extends Application {
    @Override
    public void start(Stage primaryStage) {
        try {
            WebView embeddedWV = new WebView();
            embeddedWV.getEngine().load(
            "https://www.youtube.com/embed/oyA8odjCzZ4"
            );
            embeddedWV.setPrefSize(640, 400);
            Scene scene = new Scene(embeddedWV);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Но такой подход не работает для Live-Streams, таких как https://youtu.be/opHkchLbYR4. В сообщении об ошибке указывается, что мой "браузер" / приложение не поддерживает WebM VP8, Media Source Extensions, MSE & H.264 и MSE & WebM VP9. Подход, который работал (но имел ужасную производительность), был описан здесь, но это подход для Swing, а не JavaFX8. Это все еще подтверждение концепции, которая показывает, что можно воспроизводить потоки внутри Java-приложений. Я также читал это, но это 1. для Android/IOS и 2. относится только к API Youtube-Life, который на самом деле не отвечает на вопрос и кажется немного излишним для того, что я пытаюсь выполнить.

Мой вопрос: возможно ли как-то воспроизводить прямые трансляции, транслируемые Youtube, в приложении JavaFX 8? Если это изначально невозможно, существуют ли внешние библиотеки для достижения такой цели?

1 ответ

public void start(Stage primaryStage) {
        StackPane root = new StackPane();
        Scene scene = new Scene(root, 640, 400);
        primaryStage.setScene(scene);
        WebView embeddedWV = new WebView();
        embeddedWV.getEngine().load(
       "https://www.youtube.com/embed/oyA8odjCzZ4"
            );
            embeddedWV.setPrefSize(640, 400);
            root.getChildren().add(embeddedWV);

            primaryStage.setScene(scene);
            primaryStage.show();
    }
Другие вопросы по тегам