JavaFX を使用して単純な Web ブラウザーを作成していますが、YouTube ビデオの再生に問題があることがわかりました。問題を再現するには、次の単純なコードを実行します。
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 root = new WebView();
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
root.getEngine().load("http://youtube.com");
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
YouTube ビデオを再生しようとすると、動作することもありますが、「エラーが発生しました。後でもう一度試してください」というメッセージが表示されることがよくあります (同じムービーで)。私の知る限り、JavaFX は Webkit を使用しているため、Chrome/Firefox での youtube (html5) ビデオの再生と WebView の使用に大きな違いはありません。JRE 1.8.0、1.8.20、および 2 つの異なるノートブックを試しましたが、役に立ちませんでした。
ビデオが何らかの形で機能し始めると、エラー メッセージが表示されます。
Outstanding resource locks detected:
D3D Vram Pool: 15 529 382 used (5,8%), 15 529 382 managed (5,8%), 268 435 456 total
41 total resources being managed
average resource age is 12.8 frames
0 resources at maximum supported age (0,000000)
10 resources marked permanent (24,400000)
3 resources have had mismatched locks (7,300000)
3 resources locked (7,300000)
15 resources contain interesting data (36,600000)
0 resources disappeared (0,000000)
したがって、これら 2 つの問題は、webview のメモリ リークに関連している可能性があると思います。私は正しいですか、それともこの問題を解決するための他の解決策があると思いますか?