用 C 语言编辑音频 (mp3)
Posted
技术标签:
【中文标题】用 C 语言编辑音频 (mp3)【英文标题】:Audio (mp3) editing in C 【发布时间】:2011-02-20 15:23:44 【问题描述】:我希望将 .mp3 文件“拆分”为两个单独的文件,以持续时间作为参数来指定第一个文件的长度。 但是,我不完全确定如何在 C 中实现这一点。是否有特定的库可以帮助解决这个问题?提前致谢。
【问题讨论】:
【参考方案1】:我认为您应该为此目的使用 gstreamer 框架。因此,您可以编写一个应用程序,您可以在其中使用现有插件来完成这项工作。我不确定,但你可以试一试。查看http://gstreamer.freedesktop.org/ 与 gstreamer 相关的查询:http://gstreamer-devel.966125.n4.nabble.com/
如果你最终没有找到任何库,那么了解一个 mp3 文件的标题,并将原始文件分成任意数量的部分,并为它们添加单独的标题。这并不容易,但有可能。
【讨论】:
【参考方案2】:它可以像在由 mp3 比特率和请求的持续时间确定的位置剪切文件一样简单。但是:
您的文件应该是 CBR - 该方法不适用于 ABR 或 VBR 文件,因为它们具有不同的密度 您的播放器应该足够强大,不会在开始时出现部分 mp3 帧时中断。大多数播放库都会以这种方式非常优雅地处理 mp3 分割。如果您需要更多信息,请直接询问,我正在使用手机,稍后可以为您获取更多信息。
如果你想在切割时更加精确,你可以使用一些库来解析 mp3 帧头,然后编写你需要的帧。这样,以及之前提到的方式,您将只获得最低限度的帧对齐,并且您必须忍受那是 40 毫秒。
如果这还不够,您必须将 mp3 解码为 PCM,在样本边界处拆分,然后再次重新压缩为 mp3。
祝你好运
附言
当你说分裂时,我希望你不要指望他们一个接一个地演奏而没有听得见的“神器”。 Mp3 帧不是自给自足的,因为它们携带前一帧的信息。
【讨论】:
以上是关于用 C 语言编辑音频 (mp3)的主要内容,如果未能解决你的问题,请参考以下文章