代码之家  ›  专栏  ›  技术社区  ›  Dan Williams

合并MP3文件的最佳方法是什么?[关闭]

  •  55
  • Dan Williams  · 技术社区  · 16 年前

    我有很多很多MP3文件要合并成一个文件。我使用了命令行方法

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

    但当它们很多,而且它们的动态不一致时,这是一种痛苦。时间似乎也从来没有过。

    12 回复  |  直到 11 年前
        1
  •  47
  •   Don Jones    16 年前

    正如托马斯·欧文斯指出的那样,简单地连接文件会使多个ID3头分散在结果连接的文件中,因此时间/比特率信息将是非常错误的。

    你将需要使用一个工具,可以为你组合音频数据。

    mp3wrap 这将是理想的-它的设计结合MP3文件,无需解码+重新编码数据(这将导致音频质量的损失),也将智能处理ID3标签。

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

        2
  •  54
  •   joelhardi    13 年前

    我知道这是个老问题,但我有更好的答案。David的回答是正确的,只要连接文件,ID3标签就会分散在里面(尽管这通常不会影响播放,所以您可以在必要时在Unix上执行“copy/b”或“cat A.mp3 b.mp3>combined.mp3”操作)。

    然而,mp3wrap并不是将多个mp3合并为一个“干净”文件的正确工具。它不是使用ID3,而是插入自己的 custom data format 在MP3帧中(“环绕”部分),这会导致播放问题,尤其是在iTunes和iPod上。尽管文件 播放很好如果你只是让他们从开始到结束运行(因为玩家将跳过这些任意的非mpeg字节),文件的持续时间和比特率将被错误地报告,这将中断寻找。此外,mp3wrap将清除所有ID3元数据,包括封面,并且无法用正确的文件长度更新vbr头。

    mp3cat 单独生成一个好的连接数据文件(比mp3wrap好),但是它也会去掉ID3标记,并且无法用连接文件的正确长度更新vbr头。

    这里有一个 good explanation 在这些问题和方法(实际上是两个)中,结合MP3文件并生成“干净”的最终结果,而原始元数据是完整的——它是命令行,因此适用于Mac/Linux/BSD等。它使用:

    • MP3CAT 要将MPEG数据帧仅合并为连续文件,则
    • id3cp 将所有元数据复制到组合文件,最后
    • VBRFix 更新VBR标题。

    对于Windows GUI工具,请查看 Merge MP3 --它处理一切。(vbrfix也以图形用户界面形式提供,但它不进行连接。)

        3
  •  16
  •   bmurphy1976    15 年前

    使用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
    
        4
  •  5
  •   Thomas Owens    16 年前

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

    你有你想要使用的语言吗?或者不重要吗?这将影响支持所需操作的可用库。

        5
  •  4
  •   Adam    14 年前

    我真正想要的是一个图形用户界面重新排序并将它们输出为一个文件。

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

    (披露:我写了这个软件,如果你买了专业版,我就盈利了。Lite版本是一个有一些限制的免费版本)。

        6
  •  3
  •   Chris M.    16 年前

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

    你可以用图书馆 Open Source Audio Library Project 然后在它周围写一个工具。 或者你可以使用一个能理解MP3文件的工具 Audacity .

        7
  •  3
  •   James    11 年前

    如果你想要什么 自由的 通过一个简单的用户界面, 完全清洁 我推荐MP3 MP3 Joiner .

    特征:

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

    MP3 Joiner app

    链接:

        8
  •  2
  •   joelhardi    15 年前

    正如戴维所说, mp3wrap 是前进的道路。但是,我发现它并没有修复音频长度头段,所以iTunes拒绝播放整个文件,即使所有的数据都在那里。(我合并了三个7分钟的文件,但只看到了前7分钟。)

    我挖了起来 this blog post ,这解释了如何修复此问题,以及如何从原始文件复制ID3标记(mp3wrap本身会删除ID3标记)。或者只是复制标签(使用ID3CP从 id3lib DO:

    id3cp original.mp3 new.mp3
    
        9
  •  1
  •   szeryf    16 年前

    我会用Winamp来做这个。创建要合并到其中的文件的播放列表,选择“磁盘写入程序输出插件”,选择“文件名”即可。您将得到的文件将是正确的MP3文件,您可以设置比特率等。

        10
  •  1
  •   David Leigh    15 年前

    我以前没听说过MP3Wrap。看起来很棒。我猜有人在某个地方把它变成了一个图形用户界面。但是,为了响应最初的帖子,我编写了一个执行copy/b方法的GUI。所以,在封面下,在阳光下没有什么新的东西,但是如果你有很多文件要合并的话,这个程序就是要让这个过程不那么痛苦……而且你不想重新编码,并且要合并的每一组文件都是相同的比特率。如果您有(而且您在Windows上),请访问mp3搜索: http://www.leighweb.com/david/mp3merge 看看这是不是你要找的。

        11
  •  0
  •   James    16 年前

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

        12
  •  0
  •   Daave311    15 年前

    而不是使用命令行

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

    你可以用 "The Rename" 将所有MP3片段重命名为一系列名称,这些名称基于某种计数器按顺序排列。然后,您可以使用相同的命令行格式,但稍微将其更改为:

    复制/b*.mp3输出\u name.mp3

    假设您同时翻录了所有这些片段MP3,并且它们的音频设置相同。当我把一本.a a版的有声书转换成一本.mp3版的时候,它对我很有用。我必须把所有的.a a文件烧录到9张CD,然后翻录所有的9张CD,然后剩下大约90个MP3。A55真的很疼。