如何播放mp4 JavaFx MediaPlayer

如何播放mp4 JavaFx MediaPlayer,java,javafx,Java,Javafx,我有一个带有javafx的mediaPlayer应用程序,我可以将一个MediaSource从一个控制器发送到另一个控制器,但是mp4文件不能在控制器上播放。没有任何错误或其他,它只是保持空白 我尝试System.Out.print发送媒体的源,如果单击windows 10播放视频的源,这是正确的。也许有人可以查看一下,或者javafx能玩什么和不能玩什么有限制吗 向播放机发送媒体路径的控制器和方法 public void videoLoop() { File videoDire

我有一个带有javafx的mediaPlayer应用程序,我可以将一个MediaSource从一个控制器发送到另一个控制器,但是mp4文件不能在控制器上播放。没有任何错误或其他,它只是保持空白

我尝试System.Out.print发送媒体的源,如果单击windows 10播放视频的源,这是正确的。也许有人可以查看一下,或者javafx能玩什么和不能玩什么有限制吗

向播放机发送媒体路径的控制器和方法

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的信息 可以找到有关该主题的更多信息


-Coder5986

java命名约定请注意在
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();

    }