2
我試圖從JavaFX媒體播放器檢索元數據。我創建了一個類,將歌曲的所有元數據提取到字典中,然後將其添加到其他歌曲的元數據列表中。我一直試圖鎖定這個列表,而元數據正在拉動,但每次我添加某種同步對象時,媒體播放器都會陷入循環。目前,這看起來像:MediaPlayer卡在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文件,它在我的代碼的不同部分工作(所以,編解碼器不是問題)。
是的,通常的進程來自'UNKNOWN' - >'READY'。它在代碼的其他部分執行此操作,但由於某種原因,當我檢查上述狀態時,它在UNKNOWN上停頓。 – 2013-04-11 19:08:39