我想将多通道(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文件