Как объединить необработанные данные PCM двух каналов? - PullRequest
1 голос
/ 13 мая 2019

У меня есть два Float32Array с необработанными данными pcm левого и правого канала.Можно ли создать Float32Array, который объединяет оба канала?Если так, то как бы я это сделал?Могу ли я просто объединить массивы?

Cheers!

1 Ответ

1 голос
/ 15 мая 2019

Чтобы объединить два файла 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];
    }
}
...