安排音频是Web Audio API的设计目的。如果您拥有已解码的PCM音频块作为类型化数组(AUDIO_CHUNKS
),则可以为每个块创建音频缓冲区,并使用noteOn()
在准确的时间(一个接一个)安排它们。类似于:
var startTime = 0;
for (var i = 0, audioChunk; audioChunk = AUDIO_CHUNKS[i]; ++i) {
// Create/set audio buffer for each chunk
var audioBuffer = audioCtx.createBuffer(NUM_CHANNELS, NUM_SAMPLES, SAMPLE_RATE);
audioBuffer.getChannelData(0).set(audioChunk);
var source = audioCtx.createBufferSource();
source.buffer = audioBuffer;
source.noteOn(startTime);
source.connect(audioCtx.destination);
startTime += audioBuffer.duration;
}