【发布时间】:2012-12-04 18:21:54
【问题描述】:
关于html5 webaudio的问题:是否可以将多首歌曲合并在一起?
我有不同的轨道,它们都使用 webaudio 同时播放,但我需要处理音频,所以我需要一个缓冲区内的所有音频,而不是每个轨道都有自己的缓冲区。
我尝试通过添加他们的频道数据来合并它们,但我总是得到“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) );
【问题讨论】:
-
您在使用网络音频 API 吗?您可以根据需要将任意数量的源连接到 AudioContext.destination,
-
是的;但我正在处理,所以在将音频发送到我想要操作它的音频上下文之前
标签: javascript html audio web-audio-api