合并多个音频缓冲源 [英] merge multiple audio buffer sources

查看:98
本文介绍了合并多个音频缓冲源的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Question about html5 webaudio: is it possible to merge multiple songs together?

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

I have different tracks that are all played at the same time using webaudio but I need to process the audio so I need all the audio inside one buffer in stead of each of the tracks having it's own buffer.

我尝试通过添加频道数据来合并它们但我总是得到Uncaught RangeError:Index超出范围。

i've tried merging them by adding their channel data but I always get "Uncaught RangeError: Index is out of range. "

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) );


推荐答案

原来有可能:
i have总结Float32Array

Turns out it is possible: i had to sum the Float32Array

这篇关于合并多个音频缓冲源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆