如何告诉AudioBufferSourceNode在缓冲区中间开始和结束?

时间:2014-12-04 00:40:18

标签: javascript html5 web-audio

我正在使用HTML5音频应用将声音合并到我的游戏中。如何创建一个AudioBufferSourceNode,用于在AudioBuffer中间开始和停止播放?

我在AudioBufferSourceNode接口中找不到用于创建从缓冲区中间开始的AudioBufferSourceNode的内容: https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#AudioBufferSourceNode

我想我可以创建带有原始AudioBuffer切片的AudioBufferSourceNode,但我想节省内存,因为我的游戏已经耗尽了大量的javascript堆内存,所以我真的不想复制AudioBuffers或者创造其部分。我只想制作几个AudioBufferSourceNodes,每个都播放一个AudioBuffer的部分。

我是怎么做到的?

1 个答案:

答案 0 :(得分:5)

只需使用其他(可选)参数AudioBufferSourceNode#start

即可
// begin playback immediately, starting at second 10 of the buffer 
// and lasting 20 seconds
sourceNode.start( audioContext.currentTime, 10, 20 );

第一个参数是when,您可能很熟悉。这只是使用AudioContext#currentTime的坐标系确定声音​​何时开始播放。

第二个参数是offset。这是AudioBuffer实例的秒数。因此,如果您想在10秒内开始播放缓冲区,请在此处传递10

第三个参数是duration。也是在几秒钟内,希望非常自我解释。如果不是,则确定声音的播放时间。