Nir*_*kku 3 javascript audio web-audio-api
我期待数据追加到已经存在的AudioBuffer正在被使用的网络音频播放。
接收到要播放的音频数据后,我将创建一个AudioBuffer,然后将数据分配给ArrayBuffer响应。
var audioBuffer = context.createBuffer(1, audioToPlay.length, 16000);
audioBuffer.getChannelData(0).set(audioToPlay);
Run Code Online (Sandbox Code Playgroud)
然后,我创建一个缓冲区源节点,并将音频缓冲区连接到Web音频上下文。
var source = context.createBufferSource();
source.buffer = audioBuffer;
source.connect(context.destination);
source.start(0);
Run Code Online (Sandbox Code Playgroud)
现在,我想做的是将更多数据(另一个ArrayBuffer)追加到当前正在播放的缓冲区中,同时避免必须使用onended
回调来创建新的缓冲区。
有什么办法吗?据我所知,这似乎不受支持。
你不能做这个。通过start()将播放缓冲区移交给音频线程后,您将无法对其进行修改。
但是,也就是说,您也绝对不应使用onended。您应该做的是跟踪计划的最后一个音频缓冲区及其启动的currentTime,并在时间= lastCurrentTimeStart + lastBufferDuration的情况下创建并播放新的音频缓冲区。您应该能够获得流畅,连续的播放。
归档时间: |
|
查看次数: |
1070 次 |
最近记录: |