![](/img/trans.png)
[英]Merge multiple audio buffer in to one by given position in real time - Web Audio Context
[英]merge multiple audio buffer sources
关于html5 webaudio的问题:是否可以将多首歌曲合并在一起?
我有不同的音轨都是使用webaudio同时播放但我需要处理音频所以我需要一个缓冲区内的所有音频,而不是每个音轨都有自己的缓冲区。
我已经尝试通过添加他们的频道数据来合并它们,但我总是得到“未捕获的RangeError:索引超出范围”。
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
我将两个源的输出连接到ScriptProcessorNode并实时处理它们。
您可以使用OfflineAudioContext并返回结果缓冲区。 这样可以比实时更快地处理+合并。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.