如果您阅读Media
类的Javadoc ,它说您应该等待媒体播放器准备就绪:
媒体信息是异步获取的,因此不一定在类实例化后立即可用。但是,如果实例已与MediaPlayer关联并且该播放器已转换为Status.READY状态,则所有信息都应该可用。
因此,您只需要创建一个实例MediaPlayer
并侦听Status.READY
:
File filestring = new File("my/file/dir/file.mp3");
Media file = new Media(filestring.toURI().toString());
MediaPlayer mediaPlayer = new MediaPlayer(file);
mediaPlayer.setOnReady(new Runnable() {
@Override
public void run() {
System.out.println("Duration: "+file.getDuration().toSeconds());
// display media's Metadata
for (Map.Entry<String, Object> entry : file.getMetadata().entrySet()){
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// play if you want
mediaPlayer.play();
}
});