我正在使用WebAudio API播放和可视化声音,我的代码基于this example。它的问题是当您暂停声音时,分析仪不会更新。如果你getByteFrequencyData
,你可以看到即使没有声音,它也会返回非零值。我希望分析器在音频暂停时不断更新数据,就像任何现实生活中的可视化工具一样。
我知道当您使用<audio>
元素+ createMediaElementSource
而不是createBufferSource
时,这不是问题,但最后一个有更好的浏览器支持。
答案 0 :(得分:1)
只需继续为您的绘制循环调用requestAnimationFrame
,然后使用AnalyserNode
中的数据继续绘制。
使这个演示“冻结”的代码是:
if (this.isPlaying) {
requestAnimFrame(this.draw.bind(this));
}
如果你放弃if(
,它可以正常工作。