如何播放mp4 JavaFx MediaPlayer
我有一个带有javafx的mediaPlayer应用程序,我可以将一个MediaSource从一个控制器发送到另一个控制器,但是mp4文件不能在控制器上播放。没有任何错误或其他,它只是保持空白 我尝试System.Out.print发送媒体的源,如果单击windows 10播放视频的源,这是正确的。也许有人可以查看一下,或者javafx能玩什么和不能玩什么有限制吗 向播放机发送媒体路径的控制器和方法如何播放mp4 JavaFx MediaPlayer,java,javafx,Java,Javafx,我有一个带有javafx的mediaPlayer应用程序,我可以将一个MediaSource从一个控制器发送到另一个控制器,但是mp4文件不能在控制器上播放。没有任何错误或其他,它只是保持空白 我尝试System.Out.print发送媒体的源,如果单击windows 10播放视频的源,这是正确的。也许有人可以查看一下,或者javafx能玩什么和不能玩什么有限制吗 向播放机发送媒体路径的控制器和方法 public void videoLoop() { File videoDire
public void videoLoop() {
File videoDirectory = new File("src\\ressources\\videos");
File[] listOfFiles = videoDirectory.listFiles();
File imgDirectory = new File("src\\ressources\\thumbnails");
File[] imglistOfFiles = imgDirectory.listFiles();
int i = 0;
int j = 0;
for (i = 0; i <= listOfFiles.length - 1; i++) {
for (j = 0; j <= imglistOfFiles.length -1 ; j++) {
if (listOfFiles[i].getName().replaceAll("(\\..+)$","").equals
(imglistOfFiles[j].getName().replaceAll("(\\..+)$",""))) {
ImageView imgView = new ImageView();
Image img = new Image("file:" + imglistOfFiles[j].getAbsolutePath());
imgView.setImage(img);
int finalJ1 = j;
mediaPath ="src\\ressources\\videos\\" + imglistOfFiles[finalJ1].getName().replaceAll("(\\..+)$","") + ".mp4";
imgView.setOnMouseClicked(event -> {
selectionMedia = new Media(Paths.get(mediaPath).toUri().toString());
var window = utilities.viewSwitcher.getWindow(event);
var loader = new FXMLLoader();
loader.setLocation(videoSelectionController.class.getResource("/view/videoPlayerView.fxml"));
VideoPlayerController videoPlayerController = new VideoPlayerController();
videoPlayerController.setMedia(selectionMedia);
videoPlayerController.videoPlay();
try {
window.setScene(new Scene(loader.load()));
} catch (IOException e) {
e.printStackTrace();
}
window.sizeToScene();
});
buttonBox.getChildren().add(imgView);
}
Hello Jizang取决于您使用的JavaFX版本,对媒体格式的支持可能会有所不同。如果您使用的是JavaFX8,则无法在MediaPlayer中使用MP4文件。 您将不得不为JavaFX8使用以下格式之一 “音频:MP3;包含未压缩PCM的AIFF;包含未压缩PCM的WAV;带有高级音频编码(AAC)音频的MPEG-4多媒体容器 视频:包含VP6视频和MP3音频的FLV;带有H.264/AVC(高级视频编码)视频压缩的MPEG-4多媒体容器 " -直接引用自2020年10月14日 我无法在更高版本的JavaFX上找到mediaplayer的信息 可以找到有关该主题的更多信息
-Coder5986java命名约定请注意在
selectionMedia
之前缺少代码,我已经编辑了我的代码(我希望名称约定现在应该是正确的),并将缺少的代码部分放在我的帖子中
public void videoPlay(){
var loader = new FXMLLoader(VideoSelectionController.class.getResource("/view/videoSelection.fxml"));
try {
loader.load();
} catch (IOException e) {
e.printStackTrace();
}
VideoSelectionController controller = loader.getController();
videoPlayer = new MediaView();
MediaPlayer player = new MediaPlayer(this.media);
videoPlayer.setMediaPlayer(player);
player.play();
}