如何使音频停止时WebAudio分析器不冻结

时间:2015-07-17 05:13:36

标签: web-audio

我正在使用WebAudio API播放和可视化声音,我的代码基于this example。它的问题是当您暂停声音时,分析仪不会更新。如果你getByteFrequencyData,你可以看到即使没有声音,它也会返回非零值。我希望分析器在音频暂停时不断更新数据,就像任何现实生活中的可视化工具一样。

我知道当您使用<audio>元素+ createMediaElementSource而不是createBufferSource时,这不是问题,但最后一个有更好的浏览器支持。

1 个答案:

答案 0 :(得分:1)

只需继续为您的绘制循环调用requestAnimationFrame,然后使用AnalyserNode中的数据继续绘制。

使这个演示“冻结”的代码是:

if (this.isPlaying) {
  requestAnimFrame(this.draw.bind(this));
}

如果你放弃if(,它可以正常工作。