我有很多很多mp3文件,我想将它们合并到一个文件中.我使用了命令行方法
copy /b 1.mp3+2.mp3 3.mp3
但是当它们很多并且它们的命名不一致时,它会很痛苦.时间似乎永远不会出现.
我知道这是一个老问题,但我有一个更好的答案.大卫的答案是正确的,只是连接文件会将ID3标签分散在里面(虽然这通常不会影响播放,所以你可以"复制/ b"或在UNIX上"cat a.mp3 b.mp3> combined.mp3"在紧要关头).
但是,mp3wrap并不是将多个MP3组合成一个"干净"文件的正确工具.它实际上在MP3帧("换行"部分)中插入了自己的自定义数据格式,而不是使用ID3,这会导致播放问题,特别是在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格式,但它没有加入.)
正如托马斯欧文斯所指出的那样,简单地连接这些文件会在所得到的连接文件中分散多个ID3标题 - 因此时间/比特率信息将大错特错.
您将需要使用可以为您组合音频数据的工具.
mp3wrap非常适用于此 - 它旨在将MP3文件连接在一起,而无需对数据进行解码+重新编码(这会导致音频质量下降),并且还会智能地处理ID3标签.
生成的文件也可以使用mp3splt工具拆分回其组件部分 - mp3wrap将信息添加到IDv3注释以允许此操作.
使用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
时间问题与MP3文件的ID3标题有关,这是你的方法在复制整个文件时没有考虑到的.
您是否有想要使用的语言或不重要的语言?这将影响支持所需操作的库.