我正在使用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和两个不同的笔记本电脑但它没有帮助。
当视频以某种方式开始工作时,会出现错误消息:
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)
所以我认为这两个问题可能与webview中的内存泄漏有关。我是对还是你认为可能有其他解决方案来解决这个问题?