ローカル MP3 ファイルをソースとして、最新の SoundManager2 を使用してオーディオ再生用のシンプルな Javascript ジュークボックスを構築しています。ファイルのロードと再生をソートしました。現在、これらの MP3 ファイルの ID3 情報にアクセスしようとしていますが、onid3() コールバックが起動していません。私は Flash を使用しており、ID3 情報がファイルに存在することを確認しました。以下は onid3() の私の実装です:
function playNextSongInQueue()
{
// Get the first element of the songQueue array
var nextSongInQueue = songQueue.shift();
// Start playback from the queue
var jukeboxTune = soundManager.createSound({
id: 'currentTune',
url: 'audio/' + nextSongInQueue.name,
onload: function() {
this.play();
},
onid3: function() {
alert('ID3 present!');
},
onfinish: function() {
this.destruct(); // Destroy this sound on finish
songFinish(); // Run the songFinish() function, so decide what to do next
}
});
jukeboxTune.load();
//jukeboxTune.play(); // The jukebox running!
songPlaying = true; // Set songPlaying flag
updateSongQueueDisplay(); // Refresh the song queue display (for debug)
return nextSongInQueue.name;
}
他のコールバックは正常に機能しますが、onid3() アラートは発生しません。オーディオ再生のロード部分と再生部分を分離して、それが役立つかどうかを確認しました. SoundManager は、usePolicyFile を true に切り替えるため、onid3() が存在することを検出します。MP3 がローカルであることを確認すると、クロスドメイン XML ファイルについて心配する必要はないと思います。
これが機能しない理由を誰かが明らかにできますか? 機能する実装を探して Google を精査しましたが、何も役に立ちませんでした。Jacob Seidelin の純粋な Javascript の回避策を見たことがありますが、可能であれば SoundManager に固執し、PHP ソリューションは使用したくありません。
ありがとう、
アダム