C中的音频(mp3)编辑

时间:2011-02-20 15:23:45

标签: c audio mp3

我希望将.mp3“拆分”为两个单独的文件,将持续时间作为参数来指定第一个文件应该有多长。
但是,我不完全确定如何在C中实现这一点。是否有特定的库可以帮助解决这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为你应该为此目的使用gstreamer框架。因此,您可以编写一个应用程序,您可以使用现有插件来完成此任务。我不确定这一点,但你可以尝试一下。查看http://gstreamer.freedesktop.org/ 对于与gstreamer相关的查询:http://gstreamer-devel.966125.n4.nabble.com/

如果最后没有找到任何库,那么请理解mp3文件的标题,并将原始文件分成任意数量的部分,并为它们添加单独的标题。它不容易,但它可能。

答案 1 :(得分:0)

它可以像在由mp3比特率和请求的持续时间确定的位置处切割文件一样简单。但是:

  • 您的文件应该是CBR - 该方法不适用于ABR或VBR文件,因为它们具有不同的密度
  • 你的播放器应该足够强大,如果它在开始时获得部分mp3帧就不会破坏。大多数播放库都会非常优雅地处理以这种方式分割的mp3。

如果您需要更多信息,请询问,我在手机上,以后可以为您提供更多信息。

如果你想在切割时更加精确,你可以使用一些库来解析mp3帧头,然后编写你需要的帧。这样,以及之前提到的方式,你只能将帧对齐作为最小值,而你必须忍受那个,并且那是40ms。

如果这还不够,你必须将mp3解码为PCM,在样本边界处拆分,然后再次重新压缩为mp3。

祝你好运

P.S。

当你说分裂时,我希望你不要指望他们一个接一个地玩,没有听得见的“文物”。 Mp3帧不是自给自足的,因为它们之前携带来自帧的信息。