我如何以编程方式确定当一个JavaScript AudioContext AudioBufferSource完成播放?&



我正在使用Web Audio API播放。mp3文件,并且我在编程上确定歌曲何时完成播放时遇到麻烦。

这是我的:

var request = new XMLHttpRequest();
audioContext = new AudioContext();
source = audioContext.createBufferSource();
source.connect(audioContext.destination);
request.open('GET',url,true);
request.responseType='arraybuffer';
request.onload = function() {
audioContext.decodeAudioData(request.response).then(function(buffer) {
source.buffer = buffer;
source.start(0);
});
}   
request.send();

这工作得很好;我可以开始、停止、暂停和取消歌曲,没有任何问题。

然而,我想做的是,当歌曲在完成时停止播放(即,我没有调用audioContext.close()),我想调用另一个函数来为用户设置消息。我一直在寻找某种我可以利用的回调,我已经尝试了audioContext.decodeAudioData()提供的promisefinally(),但我还没能弄清楚这一点。

处理audioContextended事件。参考AudioScheduledSourceNode: ended event

source.addEventListener('ended', () => {
// done!
});

或者使用onended属性

source.onended = () => {
// done!
}

相关内容

  • 没有找到相关文章

最新更新