这似乎是一个常见问题 - Javascript Web Audio API AnalyserNode Not Working - 但我不能确定我是否在我的实现中找到了一个边缘案例。
我使用 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 有关吗?