C++ C++;声音处理

C++ C++;声音处理,c++,signal-processing,audio,C++,Signal Processing,Audio,我正在寻找一个可以用来处理音频文件的库。基本上,我想做的是: 加载MP3/WAV文件 获取15秒的文件剪辑 将另一个MP3/WAV文件覆盖在其上 渲染为新的MP3/WAV文件 您可以使用任何常见的MP3编解码器API对流进行解码、处理并再次保存。例如,您可以使用此部件 至于混合,你可以自己做(例如,天真地,添加两个样本并除以二——这听起来可能不太好),或者为它找到一个合适的库 您可能还对sox库中的一个相关堆栈溢出问题感兴趣(而不是完全不同的库),它似乎有一个简单的API可以使用。本文档给出了以

我正在寻找一个可以用来处理音频文件的库。基本上,我想做的是:

  • 加载MP3/WAV文件

  • 获取15秒的文件剪辑

  • 将另一个MP3/WAV文件覆盖在其上

  • 渲染为新的MP3/WAV文件


  • 您可以使用任何常见的MP3编解码器API对流进行解码、处理并再次保存。例如,您可以使用此部件

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

    您可能还对sox库中的一个相关堆栈溢出问题感兴趣(而不是完全不同的库),它似乎有一个简单的API可以使用。本文档给出了以下立体声到单声道混音示例:

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

    由于 中间添加可以溢出32 位。线路

    可以解决溢出问题 (以最少的代价) 有效位)


    你可以试着看一下
    我希望它能做一些类似的事情。

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


    至于覆盖部分,一旦将样本加载到内存中,就很容易了。。。您只需将文件A中的每个样本与文件B中的相应样本进行相加(并且如果您担心剪辑,则可能通过将常数乘以常数来缩放所产生的样本值)。

    < P>一个非常好的C++音频/合成器库。它可以做大量的东西,并且是在BSD/MIT类型的许可下,也就是说,你可以用它来开发商业产品。支持Wav,但不支持MP3。例如,对于MP3,你可以使用它,它是免费的,用于非商业用途(也有很多人使用它)

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