如何合并多个 mp3 文件?

如何合并多个 mp3 文件?

在 Google 上搜索如何合并多个 mp3 文件,它建议我应该将cat它们合并在一起。

这可能“有效”,但显然不是正确的方法,因为每个标题和 IDv3 标签集也将被连接起来。

是否存在可以编写脚本来连接/合并多个 mp3 的 Linux 程序?

mplayer/mencoder/ffmpeg 可以做到吗?

答案1

这将连接两个 mp3 文件,并且生成的元数据将是第一个文件的元数据:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3

这是因为,对于 ffmpeg 来说,整个“concat:”部分是一个单独的“输入文件”,其元数据将属于第一个连接文件。如果您想使用第二个文件的元数据,则必须将其添加为虚拟输入文件并将其元数据映射到输出的元数据:

ffmpeg -i "concat:file1.mp3|file2.mp3" -i file2.mp3 -acodec copy test.mp3 -map_metadata 0:1

如果你想从这两个元数据构建元数据,你必须手动操作。你可以使用以下命令转储文件的元数据

ffmpeg -i file1.mp3 -f ffmetadata file1.metadata

转储两个元数据并构建新元数据后,可以使用 将其添加到输出文件-metadata,并且可以通过设置从负输入文件号的映射来禁用元数据复制-map_metadata。这将设置一个名称值,而不设置其他元数据:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1

答案2

这会将一个充满 MP3 的文件夹连接成一个 MP3 文件:

1)保存要连接的 MP3 文件列表,例如,

$ cat mylist.txt
file '/tmp/01.mp3'
file '/tmp/02.mp3'
file '/tmp/03.mp3'
file '/tmp/04.mp3'
file '/tmp/05.mp3'
file '/tmp/06.mp3'
file '/tmp/07.mp3'

2)运行以下命令-safe 0如果 mylist.txt 使用相对路径则不需要):

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3

答案3

Mp3Wrap- 命令行实用程序,可将多个 MP3 文件打包成单个可播放的 MP3,而不会丢失文件名或 ID3 信息,也无需重新编码。还支持存档 MP3 中的非音频数据,如播放列表、信息文件和封面图片。这些文件可以稍后解压(例如使用 mp3splt);普通 MP3 解码器可以将整个音频流作为一个长音轨播放。

答案4

根据 Miles Wolbe 的回答,这里有一个对我有用的方法:

ls *.mp3 | \
    sed -e "s/\(.*\)/file '\1'/" | \
    ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3

相关内容