用 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)的主要内容,如果未能解决你的问题,请参考以下文章

Ruby 音频库

怎么把歌曲降调、刻录?

Ueditor上传本地音频MP3

用flstudio怎么给MP3格式的歌曲降调?

使用 C++ 在 linux 中播放 .mp3 或其他音频文件 [重复]

用于编辑音频的 .NET 库 [关闭]