5

我正在寻找一个可用于操作音频文件的库。基本上我想做的是:

  1. 加载 MP3/WAV 文件

  2. 获取文件的 15 秒剪辑

  3. 在其上覆盖另一个 MP3/WAV 文件

  4. 渲染为新的 MP3/WAV 文件

4

5 回答 5

3

由于专利原因,它不支持 MP3,但libsndfile是一个非常好的开源 (LGPL) 库,用于加载和保存各种其他音频格式的音频,包括 WAV。

至于覆盖部分,一旦您将样本加载到内存中,这很容易......您只需将文件 A 中的每个样本与文件 B 中的相应样本相加(并可能通过乘以将结果样本值缩小一点一个常数,如果你担心剪裁)。

于 2009-10-27T23:06:56.753 回答
1

来自 sox的库libsox (而不是完全不同的http://libsox.sourceforge.net/)似乎有一个可以使用的简单 API。该文档提供了以下立体声到单声道混合的示例:

在处理音频时,将样本表示为整数可能会导致问题。例如,如果将左右声道混合成一个单声道声道的效果器使用线路

    *obuf++ = (*ibuf++ + *ibuf++)/2;

由于中间加法可能会溢出 32 位,因此可能会出现失真。线

    *obuf++ = *ibuf++/2 + *ibuf++/2;

将解决溢出问题(以最低有效位为代价)。

于 2009-10-27T22:34:16.443 回答
0

您可以使用任何常见的 MP3 编解码器 API 对流进行解码、使用它并再次保存它。例如,您可以在这部分使用libLAME

至于混音,您可以自己做(例如,天真地添加两个样本并除以二——这听起来可能不太好),或者为它找到一个合适的库。

您可能还对最好的 c 音频库 linux的相关 Stack Overflow 问题感兴趣

于 2009-10-27T22:12:33.793 回答
0

您可以尝试通过 http://terminatorx.org/ 来查看它,我正在查看它来做类似的事情。

于 2009-10-27T22:54:53.190 回答
0

A very good C++ audio/synth library is STK. It does loads of stuff and is under BSD/MIT type license ie you can use it to develop commercial products. Wav is supported but not MP3. For MP3 you could use irrklang, for example, which is free for non-commercial use (also MAD by underbit, is used by loads of people).

于 2011-10-03T15:00:44.440 回答