题
我正在寻找一个可用于处理音频文件的库。基本上我想做的是:
-
加载MP3 / WAV文件
-
获取文件的15秒剪辑
-
在其上覆盖另一个MP3 / WAV文件
-
渲染为新的MP3 / WAV文件
醇>
解决方案
您可以使用任何常见的MP3编解码器API对流进行解码,使用它并再次保存。例如,您可以对此部分使用 libLAME 。
至于混音,你可以自己做(例如,天真地,加两个样本并除以两个 - 听起来可能听起来不太好),或找到合适的库。
您可能也对最佳c音频库linux
中的相关Stack Overflow问题感兴趣一>其他提示
由于专利原因,它不支持MP3,但 libsndfile 非常好用开源(LGPL)库,用于加载和保存各种其他音频格式的音频,包括WAV。
对于叠加部分,一旦你将样本加载到内存中就很容易了......你只需将文件A中的每个样本与文件B中的相应样本相加(并可能将得到的样本值缩小一点)通过乘以常数,如果你担心裁剪)。
来自sox的图书馆 libsox (而不是 http://libsox.sourceforge.net/ 这是完全不同的东西)似乎有一个可以使用的简单API。文档提供了以下立体声到单声道混音的示例:
将样本表示为整数即可 处理时会导致问题 音频。例如,如果有效果 混合左右声道进入 一个单声道通道是使用的 线
*obuf++ = (*ibuf++ + *ibuf++)/2;
从那以后可能会发生失真 中间添加可以溢出32 位。这条线
*obuf++ = *ibuf++/2 + *ibuf++/2;
会解决溢出问题 (以牺牲最少为代价 重要的一点)。
您可以尝试一下这个 http://terminatorx.org/ 我正在考虑做类似的事情。
不隶属于 StackOverflow