libsox将多声道wav拆分为单声道



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

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

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

我首先打开输入文件

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

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

怎么办?

谢谢!

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

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

    Length of Data block / channelCount = Size of each channelBlock
    
  • 通道像保存在WavFile数据块中一样(对于4通道WavFile)CH1/Ch2/Ch3/Ch4 CH1/Ch2/Ch3/Ch4。

  • 我运行数据块提取通道并将它们放入mono-wav文件

最新更新