0

我想将多通道(2,8 或 16)wav 文件拆分为其通道,并将每个通道保存在另一个 wav 文件中。

到目前为止,我已经完成了在我的 c++ 目标 c++ 项目中启动并运行 libsox。

Libsox 没有很好的文档记录,并且有很多关于如何做到这一点的示例:(

我首先打开 Inputfile

sox_format_t * in, * out;
assert(sox_init() == SOX_SUCCESS);
assert(in = sox_open_read((const char*)filename.c_str(),NULL,NULL,NULL));

现在我必须找到一种方法来获取该文件的通道数。然后我必须创建相同数量的输出文件并将每个通道本身保存在其中。

怎么做?

谢谢!

4

1 回答 1

0

我想我会用老式的方式来做。

  • 确定文件的通道数。
  • 确定数据块的长度。

    Length of Data block / channelCount = Size of each channelBlock
    
  • 通道保存在 WavFile-Datablock 中(对于 4Channel WavFile)CH1/Ch2/Ch3/Ch4 CH1/Ch2/Ch3/Ch4。

  • 我遍历数据块提取通道并将它们放入单声道文件中
于 2012-09-10T09:15:40.743 回答