Javascript HTML5 Audio-AnalyserNode.getByteFrequencyData()返回未定义的

Javascript HTML5 Audio-AnalyserNode.getByteFrequencyData()返回未定义的,javascript,audio,html5-audio,webkitaudiocontext,buzz.js,Javascript,Audio,Html5 Audio,Webkitaudiocontext,Buzz.js,这似乎是一个常见的问题--但我不能确定我是否在我的实现中找到了边缘案例 我使用createMediaElementSource()创建了一个音频源,但是没有使用页面标记中的音频标记,而是使用Buzz.js动态创建元素 以下是我的测试设置: window.addEventListener('load', function(e) { audioContext = new webkitAudioContext(); audioAnalyser = audioContext.create

这似乎是一个常见的问题--但我不能确定我是否在我的实现中找到了边缘案例

我使用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));                                           
})    
使用上面的代码,声音就会播放。我还可以附加其他节点(双四阶滤波器、增益等),但AudioAnalyzer.getByteFrequencyData会在每一帧上返回未定义的值


这可能与使用Buzz.js有关吗?

这是理解上的失败

基本上,我希望控制台记录以下内容的某种输出:

window.setInterval(
    array = new Uint8Array(audioAnalyser.frequencyBinCount);
    console.log(audioAnalyser.getByteFrequencyData(array));                                           
)
我应该做的是:

window.setInterval(function(){
    array = new Uint8Array(audioAnalyser.frequencyBinCount);
    audioAnalyser.getByteFrequencyData(array); 
    console.log(array);                                 
})
有点傻,但我希望这能帮助那些可能希望GetByTefFrequencyData返回某种值的人