JavaFX';s媒体播放器未检索元数据

JavaFX';s媒体播放器未检索元数据,java,javafx,media-player,Java,Javafx,Media Player,我正在使用JavaFX媒体播放器库创建一个视频播放器。我需要检索元数据并显示在窗口中。但我在检索数据时遇到问题 我已经读了两篇关于这方面的文章,我知道这是异步完成的,所以我需要一个侦听器来获取元数据 第一个线程: 第二个线程: 此代码的实现方式如下所示 public void initialize(URL location, ResourceBundle resources) { //Initialising path of the media file, replace this wi

我正在使用JavaFX媒体播放器库创建一个视频播放器。我需要检索元数据并显示在窗口中。但我在检索数据时遇到问题

我已经读了两篇关于这方面的文章,我知道这是异步完成的,所以我需要一个侦听器来获取元数据

第一个线程: 第二个线程:

此代码的实现方式如下所示

public void initialize(URL location, ResourceBundle resources) {

   //Initialising path of the media file, replace this with your file path
    String path = "Video.mp4";

    //Instantiating Media class
    Media media = new Media(new File(path).toURI().toString());

    //Listener
    media.getMetadata().addListener((MapChangeListener<String,Object>) change-> {
      System.out.println(change);
    });

   //Instantiating MediaPlayer class
    mediaPlayer = new MediaPlayer(media);
    mv.setMediaPlayer(mediaPlayer);


    mediaPlayer.setOnReady(() -> {

    ...

      mediaPlayer.play();
    });


  }


public void初始化(URL位置,ResourceBundle资源){
//正在初始化媒体文件的路径,请将其替换为您的文件路径
String path=“Video.mp4”;
//实例化媒体类
媒体=新媒体(新文件(路径).toURI().toString());
//听众
media.getMetadata().addListener((MapChangeListener)更改->{
系统输出打印项次(变更);
});
//实例化MediaPlayer类
mediaPlayer=新的mediaPlayer(媒体);
mv.setMediaPlayer(mediaPlayer);
mediaPlayer.setOnReady(()->{
...
mediaPlayer.play();
});
}
我尝试过对侦听器进行各种不同的更改,例如将其放置在代码的不同区域,并尝试从访问媒体本身的mediaPlayer获取数据。这些似乎都没有解决这个问题

我曾尝试在代码中打印语句,试图打印出
media.getMetadata
的内容,但我得到的只是一个空列表

我已经尝试为
media.getTracks()
创建了一个侦听器,它可以在播放器每次切换状态时进行更新。因此,我想知道
media.getMetadata()到底出了什么问题

我认为听众看不到任何变化,这就是为什么从未接触到
print(change)
。然而,即使这是真的,我是否应该在
setOnAction
code中执行
system.out.print(media.getMetaData())
来给我数据?因为当我尝试时,我得到的只是一个空的列表


有人知道如何解决这个问题或告诉我我做错了什么吗

您确定MP4文件中有以下内容吗?如果有,元数据存储在文件中的什么位置?您确定MP4文件中有以下内容吗?如果有,元数据存储在文件中的什么位置?