gpt4 book ai didi

java - MediaPlayer 在 JavaFX 中陷入无限循环

转载 作者:行者123 更新时间:2023-11-30 09:23:40 25 4
gpt4 key购买 nike

我正在尝试从 JavaFX 媒体播放器检索元数据。我创建了一个类,将歌曲的所有元数据提取到字典中,然后将其添加到其他歌曲的元数据列表中。我一直试图在提取元数据时锁定此列表,但每次我添加某种同步对象时,媒体播放器都会陷入循环。目前,这看起来像:

        Media track = new Media(f.toURI().toString());          
MediaPlayer mp = new MediaPlayer(track);
while(mp.getStatus() != Status.READY) {
// Wait until ready
try {
Thread.sleep(1000);

}
catch (InterruptedException e) {
e.printStackTrace();

}
System.out.println(mp.getStatus().toString());
// Check for errors
if (mp.getError() != null) {
System.out.println(mp.getError());
try {
Thread.sleep(10000);
}
catch (InterruptedException e) {
e.printStackTrace();

}

}

}

// Construct dictionary and add it to this.db
Hashtable<String, String> entry = new Hashtable<String, String>();
for (String key : mp.getMedia().getMetadata().keySet()) {
entry.put(key, mp.getMedia().getMetadata().get(key).toString());

}
if (entry != null) {
entry.put("file_path", mp.getMedia().getSource());
db.add(entry);
System.out.println(getByIndex(0).toString());

}

状态打印总是打印 UNKNOWN,并且不会抛出任何错误。知道这里会发生什么吗?谢谢!

编辑 - 应该提到,我尝试播放的媒体是 MP3 文件,它在我的代码的不同部分工作(因此,编解码器不是问题)。

最佳答案

您正在暂停 JavaFX 应用程序线程,以便它可以执行任何操作。

代替 while true with thread sleep 构造,为媒体播放器提供 onReady处理程序并在播放器告诉您准备就绪时查询和处理元数据。

关于java - MediaPlayer 在 JavaFX 中陷入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15956235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com