javascript - 合并多个音频缓冲源

标签 javascript html audio web-audio-api

关于html5 webaudio的问题:是否可以将多首歌曲合并在一起?

我有不同的轨道,它们都使用 webaudio 同时播放,但我需要处理音频,所以我需要一个缓冲区中的所有音频,而不是每个轨道都有自己的缓冲区。

我已经尝试通过添加他们的 channel 数据来合并他们,但我总是得到“未捕获的范围错误:索引超出范围。”

function mergeBuffers(recBuffers, recLength){

  var result = new Float32Array(recLength*2);
  var offset = 0;
  for (var i = 0; i < recBuffers.length; i++){
    result.set(recBuffers[0], offset);
    offset += recBuffers[0].length;
  }
  return result;
}

var recBuffersL = [];
for (var i=0;i<audioTracks.length; i++)
{
    recBuffersL[i] = audioTracks[i].currentBuffer.getChannelData(0);

}

var recBuffersR = [];
for (var i=0;i<audioTracks.length; i++)
{
    recBuffersR[i] = audioTracks[i].currentBuffer.getChannelData(1);

}


var buffers = [];
buffers.push( mergeBuffers(recBuffersL, recBuffersL.length) );
buffers.push( mergeBuffers(recBuffersR, recBuffersR.length) );

最佳答案

事实证明这是可能的: 我不得不对 Float32Array 求和

关于javascript - 合并多个音频缓冲源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13709391/

相关文章:

javascript - 将 D3 包含在 ERB 循环中

html - Bootstrap 表上的滚动条

javascript - 使用 JavaScript 检测文件系统上的页面何时发生更改

javascript - 如何将图片高度和宽度传递给 html 灯箱

ios - 播放 15 秒 mp3 ios

matlab - MATLAB声音命令

html - 如何在网络上播放音频文件但未启用下载?

javascript - Jest 测试 Mongoose 模型实例化

javascript - 滚动到一个元素

javascript - 从 div 的底部计算底部