我已将.mov
视频转换为.mp4
,但是当我在 javafx 应用程序中播放视频时,它不起作用,我可以听到视频文件的音频但没有图片!也许 .mp4 不在正确的编解码器中!任何想法或解决方案?
更新
使用相同的代码,我在相同的条件下播放了另一个 mp4 视频(平台,JFX 版本,...),所以我得出的结论是,我对这个 mp4 转换文件有问题,即我使用的软件转换 mov 文件不会生成 JFX 2.1 支持的适当 mp4 格式。
我已将.mov
视频转换为.mp4
,但是当我在 javafx 应用程序中播放视频时,它不起作用,我可以听到视频文件的音频但没有图片!也许 .mp4 不在正确的编解码器中!任何想法或解决方案?
更新
使用相同的代码,我在相同的条件下播放了另一个 mp4 视频(平台,JFX 版本,...),所以我得出的结论是,我对这个 mp4 转换文件有问题,即我使用的软件转换 mov 文件不会生成 JFX 2.1 支持的适当 mp4 格式。
以下代码示例演示了在 JavaFX 中播放 h.264 编码的 mp4 视频。
import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.*;
import javafx.scene.media.*;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
/** plays an mp4 video in JavaFX 2.1+ */
public class OnlineVideoPlayer extends Application {
public static void main(String[] args) { launch(args); }
@Override public void start(Stage stage) {
final Label status = new Label("Init");
MediaPlayer mediaPlayer = createMediaPlayer(
"http://www.html5videoplayer.net/videos/toystory.mp4",
status
);
VBox layout = new VBox(10);
layout.setAlignment(Pos.CENTER);
layout.getChildren().addAll(new MediaView(mediaPlayer), status);
stage.setScene(new Scene(layout, 500, 300, Color.CORNSILK));
stage.show();
if (mediaPlayer != null) {
mediaPlayer.play();
}
}
/**
* creates a media player using a url to the media
* and tracks the status of playing the media via the status label
*/
private MediaPlayer createMediaPlayer(final String url, final Label status) {
Media hit = new Media(url);
MediaPlayer mediaPlayer = new MediaPlayer(hit);
mediaPlayer.setOnError(new Runnable() {
@Override public void run() {
status.setText("Error");
}
});
mediaPlayer.setOnPlaying(new Runnable() {
@Override public void run() {
status.setText("Playing: " + url);
}
});
mediaPlayer.setOnEndOfMedia(new Runnable() {
@Override public void run() {
status.setText("Done");
}
});
return mediaPlayer;
}
}
您需要确保您的 .mp4 文件以 H264 编码。MPEG4 不起作用。