我設法運行簡單的JavaFx Webview應用程序在本地主機上運行一個html文件,運行在微服務Spark web framework在嵌入式jetty容器中使用我的問題是JavaFx Webview無法識別視頻文件來源的html5視頻標籤,而使用鉻,即,和其他主流瀏覽器頁面完美呈現和視頻文件正在工作。JavaFx Webview不在本地主機服務器上加載html5視頻
我現在不是現在,如果它是一個錯誤,或者是我已經搞砸了東西。
這裏是我的問題的工作卡:
工作區文件lyaout:
Workspace/Work-directory
.
├── public
| └── index.html
| └── video.mp4
└── src
└── main
| └── java
| └── com
| └── mycompany
| └── MainTest.java
| └── SparkTest.java
└── pom.xml
相關性(pom.xml中):
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.5</version>
</dependency>
SparkTest.java
package com.mycompany;
import spark.Spark;
public class SparkTest {
public static void main(String[] args) {
Spark.staticFiles.externalLocation("public");
Spark.get("/run", (request, response) -> "Spark is Runnig");
}
}
MainTest.java
package com.mycompany;
import java.io.IOException;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class MainTest extends Application {
@Override
public void start(Stage stage) throws Exception {
StackPane root = new StackPane();
WebView view = new WebView();
view.getEngine().load("http://127.0.0.1:4567/index.html");
root.getChildren().add(view);
Scene scene = new Scene(root, 800, 600);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) throws IOException {
Application.launch(args);
}
}
的index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>html5 video</h1>
<video controls preload="auto" width="640" height="480">
<source src="video.mp4" type='video/mp4'>
</video>
</body>
</html>
here you can find .mp4 video file
我看不到你做一些錯誤;我自己嘗試過,並且可以確認:當頁面由spark提供時,它可以與普通瀏覽器一起使用,但不適用於JavaFx WebView。但是,當頁面使用本地文件URI加載到WebView中時,視頻將播放。所以WebView可以播放視頻,在sparkjava/jetty和WebView之間的通信中必須有一些東西,但我還沒有找到它可能是什麼。 –