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ファイルであり、コードの別のセクションで機能しました(したがって、コーデックは問題ではありません)。