66

我有很多很多 mp3 文件,我想合并到一个文件中。我已经使用了命令行方法

copy /b 1.mp3+2.mp3 3.mp3

但是当它们很多并且它们的命名不一致时,这是一种痛苦。时间似乎也永远不会正确。

4

12 回答 12

61

大卫的回答是正确的,只是连接文件会使 ID3 标签分散在里面(尽管这通常不会影响播放,所以你可以做“复制/b”或在 UNIX 上“cat a.mp3 b.mp3 > combined.mp3”在紧要关头)。

但是,mp3wrap 并不是将多个 MP3 组合成一个“干净”文件的正确工具。它实际上不是使用 ID3,而是在 MP3 帧(“包装”部分)中插入自己的自定义数据格式,这会导致播放问题,尤其是在 iTunes 和 iPod 上。虽然如果您让文件从头到尾运行(因为播放器将跳过这些任意非 MPEG 字节)文件将正常播放,但文件持续时间和比特率将被错误地报告,从而中断搜索此外,mp3wrap 将清除所有 ID3 元数据,包括封面,并且无法使用正确的文件长度更新 VBR 标头。

mp3cat本身会生成一个很好的连接数据文件(因此,比 mp3wrap 更好),但它也会去除 ID3 标记,并且无法使用连接文件的正确长度更新 VBR 标头。

这是对这些问题和方法(实际上是两个)的一个很好的解释,用于组合 MP3 文件并产生原始元数据完整的“干净”最终结果——它是命令行,因此适用于 Mac/Linux/BSD 等。它使用:

  • mp3cat仅将 MPEG 数据帧组合成一个连续文件,然后
  • id3cp将所有元数据复制到组合文件中,最后
  • VBRFix更新 VBR 标头。

对于 Windows GUI 工具,请查看Merge MP3——它可以处理所有事情。(VBRFix 也以 GUI 形式出现,但它不进行连接。)

于 2011-03-19T21:21:10.110 回答
52

正如 Thomas Owens 指出的那样,简单地连接文件会留下多个 ID3 标头分散在生成的连接文件中 - 因此时间/比特率信息将非常错误。

您将需要使用可以为您组合音频数据的工具。

mp3wrap将是理想的选择 - 它旨在将 MP3 文件连接在一起,无需对数据进行解码+重新编码(这会导致音频质量损失),并且还将智能地处理 ID3 标签。

也可以使用 mp3splt 工具将生成的文件拆分回其组成部分 - mp3wrap 将信息添加到 IDv3 注释以允许这样做。

于 2008-09-15T13:16:27.447 回答
20

使用 ffmpeg 或类似工具将所有 MP3 转换为一致的格式,例如

ffmpeg -i originalA.mp3 -f mp3 -ab 128kb -ar 44100 -ac 2 intermediateA.mp3  
ffmpeg -i originalB.mp3 -f mp3 -ab 128kb -ar 44100 -ac 2 intermediateB.mp3

然后,在运行时,将您的文件连接在一起:

cat intermediateA.mp3 intermediateB.mp3 > output.mp3

最后,通过工具MP3Val运行它们以修复任何流错误,而无需强制完全重新编码:

mp3val output.mp3 -f -nb
于 2009-09-25T21:33:54.960 回答
6

时间问题与 MP3 文件的 ID3 标头有关,这是您的方法在复制整个文件时没有考虑到的问题。

您是否有选择的语言想要使用或没关系?这将影响支持您想要的操作的可用库。

于 2008-09-15T13:04:28.037 回答
4

MP3 文件具有您需要尊重的标题。

您可以使用诸如开源音频库项目之类的库并围绕它编写工具。或者,您可以使用能够理解 mp3 文件的工具,例如Audacity

于 2008-09-15T13:19:40.450 回答
4

我真正想要的是一个 GUI 来重新排序它们并将它们作为一个文件输出

Playlist Producer正是这样做的,将它们解码并重新编码成一个组合的 MP3。它专为创建混合磁带或简单的播客而设计,但您可能会发现它很有用。

(披露:我编写了软件,如果你购买专业版,我会获利。精简版是免费版,有一些限制)。

于 2010-12-03T21:40:10.123 回答
2

正如大卫所说,mp3wrap是要走的路。但是,我发现它没有修复音频长度标题,因此即使所有数据都在那里,iTunes 也拒绝播放整个文件。(我合并了三个 7 分钟的文件,但它只看到了前 7 分钟。)

我挖出了这篇博文,它解释了如何解决这个问题以及如何从原始文件中复制 ID3 标签(mp3wrap 会自行删除你的 ID3 标签)。或者只是复制标签(使用 id3lib 中的id3cp),请执行以下操作:

id3cp original.mp3 new.mp3
于 2009-02-22T06:02:58.653 回答
1

我会使用 Winamp 来做到这一点。创建要合并为一个的文件的播放列表,选择磁盘写入器输出插件,选择文件名,您就完成了。您将获得的文件将是正确的 MP3 文件,您可以设置比特率等。

于 2008-09-15T13:20:26.890 回答
1

我以前没有听说过 mp3wrap。看起来很棒。我猜有人也在某个地方把它变成了一个gui。但是,为了回应原始帖子,我编写了一个执行 COPY /b 方法的 gui。所以,在幕后,没有什么新鲜事,但是如果你有很多文件要合并,这个程序就是为了让这个过程不那么痛苦……而且你不想重新编码和每组文件合并是相同的比特率。如果您有(并且您在 Windows 上),请查看 Mp3Merge,网址为:http: //www.leighweb.com/david/mp3merge,看看这是否是您正在寻找的。

于 2009-08-07T15:40:57.017 回答
1

如果您想通过简单的用户界面制作完全干净的 mp3 的免费内容,我推荐MP3 Joiner

特征:

  • 剥离 ID3 数据(ID3v1 和 ID3v2.x)并且不添加它自己的(与 mp3wrap 不同)
  • 无损加入(不解码和重新编码 .mp3)。无需编解码器。
  • 简单的用户界面(见下文)
  • 低内存使用(使用流)
  • 非常快(与 mp3wrap 相比)
  • 我写了:) - 所以你可以请求功能,我会添加它们。

MP3 细木工应用程序

链接:

于 2013-05-25T17:22:12.307 回答
0

就我个人而言,我会使用类似 mplayer 的音频通过选项,例如 -oac copy

于 2008-09-15T13:14:18.780 回答
0

而不是使用命令行来做

复制 /b 1.mp3+2.mp3 3.mp3

您可以改为使用“重命名”将所有 MP3 片段重命名为一系列名称,这些名称根据某种计数器按顺序排列。然后你可以使用相同的命令行格式,但稍微改变一下:

复制 /b *.mp3 output_name.mp3

这是假设您同时翻录所有这些片段 MP3 并且它们具有相同的音频设置。当我将 .aa 中的有声读物转换为单个 .mp3 时,这对我来说非常有用。我不得不将所有的 .aa 文件刻录到 9 张 CD 上,然后翻录所有 9 张 CD,然后剩下大约 90 张 mp3。在a55上真的很痛苦。

于 2009-11-18T22:05:49.017 回答