【发布时间】:2015-08-07 21:39:23
【问题描述】:
在使用 AudioBufferSourceNode 开始播放 AudioBuffer 中的音频后,我如何让它在预定时间(毫秒)后停止?我的设置很简单:
// create audio source
var source = audioCtx.createBufferSource();
// play audio from source
source.start();
使用AudioBufferSourceNode.stop(),我只能以秒为单位指定此持续时间,但提供任何非整数值将因某种原因评估为零,并使音频立即停止:
source.stop(0.25); // should be 250 milliseconds, but audio stops immediately
setTimeout 不够精确,偶尔会出现抖动/漂移,尤其是在 UI 工作量很大或正在其他地方执行其他计算的情况下。
setTimeout(function () {
source.stop(); // very inaccurate
}, 250);
是否有一个简单的解决方案可以在一定的 毫秒 后停止播放音频,而不需要使用工作线程中的忙等待等技巧?
【问题讨论】: