javascript - 播放生成的声音

标签 javascript web-audio-api

我想捕获音频(在我的例子中是从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/

相关文章:

javascript - 无法检索最近的元素

javascript - jQuery Toggle -- 我做错了什么?

javascript - 使用 Web Audio API 进行离线/非实时渲染

html - 通过 webAudio API 播放 pcm 数据

javascript - 无法让 WebAudio 通过 iOS 8 播放

Javascript - 如何在每次调用后跟随功能并改变它们的用途?

javascript - 错误 "TypeError: $(...).children is not a function"

javascript - 在 Javascript 中将数据追加到多维数组中

javascript - 网络音频API : Change pitch of samples (for example mp3)

javascript - AudioBufferSourceNode.stop() 是否需要 'this' 绑定(bind)?