如何合并两个通道的原始pcm数据?

时间:2019-05-13 16:30:17

标签: javascript audio ffmpeg pcm typed-arrays

我有两个Float32Array,分别包含左右声道的原始pcm数据。是否可以创建结合了两个渠道的Float32Array?如果是这样,我该怎么做?我可以简单地串联数组吗?

干杯!

1 个答案:

答案 0 :(得分:0)

要将两个PCM文件(左右声道)合并为一个,您需要对它们进行交织:

(L,1),(R,1),(L,2),(R,2),...,(L,n),(R,n)

代码看起来像这样:

const interleavedChannelData = new Float32Array(leftChannelData.length + rightChannelData.length);

for (let i = 0; i < interleavedChannelData.length; i += 1) {
    if (i % 2 === 0) {
        interleavedChannelData[i] = leftChannelData[i / 2];
    } else {
        interleavedChannelData[i] = rightChannelData[(i - 1) / 2];
    }
}