JavaFX MediaView 渲染白色视频
JavaFX MediaView rendering a white video
TL;DR:解决方案:将 JavaFX 版本增加到 15.0.1。
我正在重写我昨天问的问题,因为它的表述和解释都很糟糕。
我的工作:我使用 JavaFX 创建 Media 和 MediaView 在场景中渲染 .mp4 视频。
发生了什么:屏幕保持空白。
应该发生什么:视频应该正确呈现并被用户看到。
我试过的 :
- 更改文件编码(从 H.264 到 QuickTime(输出为 .mov))。
- 结果:JavaFX 无法识别 QuickTime 编码。
- 正在将 FPS 值从 30 更改为 60,然后从 60 更改为 30。
- 结果:没有区别。
- 通过缩短视频来调整文件大小。
- 结果:没有区别。
- 正在将视频分辨率比例从 16:9 更改为 16:10。
- 结果:没有区别。
- 正在将视频分辨率值从 2560x1440 更改为 1920x1080。
- 结果:视频显示在屏幕上,但我需要一个 2560x1440 的视频来填满屏幕。稍后我会自己处理不同的分辨率。
- 使用我电脑中的不同视频。
- 结果:小于或等于 1920x1080 的分辨率工作正常。我尝试了另一个分辨率为 2560x1440 的视频,但它不起作用。
- 使用互联网引用的 2560x1440 视频 URL。
- 结果:与上述行为相同。
我的代码 :
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import java.io.File;
public class Application extends javafx.application.Application {
Stage window;
@Override
public void start(Stage primaryStage) {
window = primaryStage;
window.setWidth(2560);
window.setHeight(1440);
window.setX(0);
window.setY(0);
window.setResizable(false);
window.setFullScreen(true);
window.setFullScreenExitHint("");
Pane pane = new Pane();
// Example to show that adding a simple figure to the pane works fine.
javafx.scene.shape.Rectangle r = new javafx.scene.shape.Rectangle(0, 0, 150, 150);
Media media = new Media(new File(/*Insert file name you own for testing purposes*/).toURI().toString());
// The path I would use : "src\main\resources\img\Animated Titlescreen Background.mp4".
// This is obtained using other classes and methods that read the computer directories,
// so it works fine across different computers.
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
MediaView mediaView = new MediaView(mediaPlayer);
pane.getChildren().addAll(mediaView, r);
Scene scene = new Scene(pane, 2560, 1440);
window.setScene(scene);
window.show();
}
public static void main(String[] args) {
launch(args);
}
}
在 this link 上阅读更多内容后,它说 Windows 8 将 H.264 解码器分辨率提高到 4096x2304,这在 JavaFX 15.0 版上可用。 1.我使用的是 12.0.1 版,因为 Linux 上的 15.0.1.
版存在严重问题
解决方案:将 JavaFX 版本增加到 15.0.1。
TL;DR:解决方案:将 JavaFX 版本增加到 15.0.1。
我正在重写我昨天问的问题,因为它的表述和解释都很糟糕。
我的工作:我使用 JavaFX 创建 Media 和 MediaView 在场景中渲染 .mp4 视频。
发生了什么:屏幕保持空白。
应该发生什么:视频应该正确呈现并被用户看到。
我试过的 :
- 更改文件编码(从 H.264 到 QuickTime(输出为 .mov))。
- 结果:JavaFX 无法识别 QuickTime 编码。
- 正在将 FPS 值从 30 更改为 60,然后从 60 更改为 30。
- 结果:没有区别。
- 通过缩短视频来调整文件大小。
- 结果:没有区别。
- 正在将视频分辨率比例从 16:9 更改为 16:10。
- 结果:没有区别。
- 正在将视频分辨率值从 2560x1440 更改为 1920x1080。
- 结果:视频显示在屏幕上,但我需要一个 2560x1440 的视频来填满屏幕。稍后我会自己处理不同的分辨率。
- 使用我电脑中的不同视频。
- 结果:小于或等于 1920x1080 的分辨率工作正常。我尝试了另一个分辨率为 2560x1440 的视频,但它不起作用。
- 使用互联网引用的 2560x1440 视频 URL。
- 结果:与上述行为相同。
我的代码 :
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
import javafx.stage.Stage;
import java.io.File;
public class Application extends javafx.application.Application {
Stage window;
@Override
public void start(Stage primaryStage) {
window = primaryStage;
window.setWidth(2560);
window.setHeight(1440);
window.setX(0);
window.setY(0);
window.setResizable(false);
window.setFullScreen(true);
window.setFullScreenExitHint("");
Pane pane = new Pane();
// Example to show that adding a simple figure to the pane works fine.
javafx.scene.shape.Rectangle r = new javafx.scene.shape.Rectangle(0, 0, 150, 150);
Media media = new Media(new File(/*Insert file name you own for testing purposes*/).toURI().toString());
// The path I would use : "src\main\resources\img\Animated Titlescreen Background.mp4".
// This is obtained using other classes and methods that read the computer directories,
// so it works fine across different computers.
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
MediaView mediaView = new MediaView(mediaPlayer);
pane.getChildren().addAll(mediaView, r);
Scene scene = new Scene(pane, 2560, 1440);
window.setScene(scene);
window.show();
}
public static void main(String[] args) {
launch(args);
}
}
在 this link 上阅读更多内容后,它说 Windows 8 将 H.264 解码器分辨率提高到 4096x2304,这在 JavaFX 15.0 版上可用。 1.我使用的是 12.0.1 版,因为 Linux 上的 15.0.1.
版存在严重问题解决方案:将 JavaFX 版本增加到 15.0.1。