我想捕获音频(在我的例子中是从getUserMedia
)并播放它。我可以将一堆 AudioBuffer 推送到数组中,如下所示:
var recorder = audio_context.createJavaScriptNode(256, 2, 2);
recorder.onaudioprocess = function(e) {
recorded.push(e.inputBuffer.getChannelData(0));
// or just:
// recorded.push(e.inputBuffer);
};
recorder.connect(audio_context.destination);
但是我该如何播放 recorded
数组中的缓冲区呢?
一种将它们合并到一个缓冲区并使用 createBufferSource
播放它的方法?
完全不同的方法?
最佳答案
完成音频录制后,您应该能够执行以下操作:
var bufferIndex = 0;
recorder.onaudioprocess = function (e) {
var outputData = e.outputbuffer.getChannelData(0);
var recordedData = recorded[bufferIndex];
for (var i = 0; i < recordedData.length; i++) {
outputData[i] = recordedData[i];
});
bufferIndex++;
}
(您可能可以使其更简单/更清晰;这仅用于说明目的)
关于javascript - 播放生成的声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13128107/