我正在寻找可能被用来操纵音频文件库。基本上就是我想要做的是:C++声音处理
加载的MP3/WAV文件
获取文件
覆盖另一个MP3/WAV文件ontop的它
的15秒剪辑呈现为一个新的MP3/WAV文件
我正在寻找可能被用来操纵音频文件库。基本上就是我想要做的是:C++声音处理
加载的MP3/WAV文件
获取文件
覆盖另一个MP3/WAV文件ontop的它
的15秒剪辑呈现为一个新的MP3/WAV文件
您可以使用任何常见的MP3编解码器API来解码流,使用它并再次保存。例如,你可以使用libLAME这个部分。
至于混合,你既可以自己做的(例如,天真,由两个增加两个样品和鸿沟 - 这可能不是听起来好得),或者为它找到一个合适的库。
您可能也有兴趣在一个相关的堆栈溢出问题在best c audio library linux
图书馆libsox从SOX(而不是http://libsox.sourceforge.net/这是完全不同的东西),似乎有一个简单的API,它可以使用。该文档给出了下面的示例用于立体声到单声道混合:
为整数可以在处理 音频时 造成问题代表样本。例如,如果到 效果缩混左和右声道成 一个单声道信道分别使用 线可能发生
*obuf++ = (*ibuf++ + *ibuf++)/2;
失真由于 中间除了可以溢出32 位。该生产线
*obuf++ = *ibuf++/2 + *ibuf++/2;
将得到全面的溢出问题 (至少 显著位的代价)。
,你可以尝试这给人一种过目 http://terminatorx.org/ 我看着它做类似的事情。
由于专利原因,它不支持MP3,但libsndfile是一个非常不错的开源(LGPL)库,用于以各种其他音频格式(包括WAV)加载和保存音频。
至于覆盖部分,这很简单,一旦你得到加载到内存中的样本......你刚才总结每个样品在文件中的与其对应的样本文件B(以及可能的规模所产生的采样值向下如果你担心剪辑的话,通过乘以一个常数来实现)。
+1为libsndfile。 – 2009-10-27 23:15:11