【问题标题】:How to merge the raw pcm data of two channels?如何合并两个通道的原始 pcm 数据?
【发布时间】:2019-09-30 15:44:02
【问题描述】:

我有两个Float32Arrays 包含左右声道的原始 pcm 数据。是否可以创建一个结合两个频道的Float32Array?如果是这样,我该怎么做?我可以简单地连接数组吗?

干杯!

【问题讨论】:

  • 您打算使用 ffmpeg API 还是 CLI?
  • @Gyan 我正在使用节点fluent-ffmpeg lib(它只允许一个流作为输入,这就是为什么我想将 pcm 数据合并到一个文件中)

标签: javascript audio ffmpeg pcm typed-arrays


【解决方案1】:

要将两个 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];
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 2015-08-31
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多