これはよくある質問のようです - Javascript Web Audio API AnalyserNode が機能していません- しかし、私の実装でエッジケースが見つかったかどうかはわかりません。
createMediaElementSource() を使用してオーディオ ソースを作成しますが、ページ マークアップのオーディオ タグを使用する代わりに、要素は Buzz.js を使用して動的に作成されます。
これが私のテスト設定です:
window.addEventListener('load', function(e) {
audioContext = new webkitAudioContext();
audioAnalyser = audioContext.createAnalyser();
sound = new buzz.sound("sound.mp3");
sound.load().bind("canplaythrough", function(e) {
source = audioContext.createMediaElementSource(this.sound);
source.connect(audioAnalyser);
audioAnalyser.connect(audioContext.destination);
this.play().loop();
});
}, false);
window.setInterval(function(){
array = new Uint8Array(audioAnalyser.frequencyBinCount);
console.log(audioAnalyser.getByteFrequencyData(array));
})
上記のコードでは、サウンドが再生されます。動作する他のノード (バイカッド フィルター、ゲインなど) をアタッチすることもできますが、audioAnalyser.getByteFrequencyData はすべてのフレームで未定義の値を返します...
Buzz.js の使用と何か関係があるのでしょうか?