如何使用 ffmpeg 将 mp3 拼接在一起

如何使用 ffmpeg 将 mp3 拼接在一起

我需要将 5 x 2 分钟的 mp3 样本拼接在一起,制作成 10 分钟的视频。如何使用命令行中的 ffmpeg 来实现这一点?

答案1

我不认为 FFMPEG 可以在没有一些疯狂的命令行的情况下做到这一点,但是MP3包装就是为此目的而设计的。

您也可以在 Linux 上使用 cat 命令:

cat 文件1.mp3 文件2.mp3 > 合并.mp3

这将合并 file1.mp3 和 file2.mp3

或者在 Windows 上使用复制命令:

复制/b *.mp3 c:\combined.mp3

它会将当前目录中的所有 mp3 文件合并到 C:\combined.mp3。

但 cat 和 copy 方法经常会产生不良影响。主要问题是可能会报告错误长度的 mp3 文件,这可能会给某些音频播放器带来问题 —— 并丢失 ID3 标签。MP3Wrap 解决了这两个问题,并且适用于 Linux 和 Windows。

答案2

使用最新的 ffmpeg,您可以使用 concat 协议(文件级连接)或 concat demuxer(或 concat 过滤器,但需要重新编码)。该协议占用的资源较少,而且,如果我没记错的话,应该可以很好地处理 MP3;但如果这不起作用,您应该改用 demuxer。

Concat 协议

如果您有三个文件,分别名为 1.mp3、2.mp3 和 3.mp3,则命令将如下所示:

ffmpeg -i 'concat:1.mp3|2.mp3|3.mp3' -c copy output.mp3

请注意,单引号很重要。

Concat 解复用器

首先,您必须创建一个包含如下行的纯文本文件:

file '1.mp3'
file '2.mp3'
file '3.mp3'

您还可以提供每个 MP3 文件的绝对路径或相对路径。

如果您正在使用 bash shell,则可以使用如下命令快速生成包含目录中所有 MP3 的文件:

for f in *.mp3; do echo "file '$f'" >> inputs.txt; done

您实际使用的 ffmpeg 命令是:

ffmpeg -f concat -i inputs.txt -c copy output.mp3

这里了解更多信息。

相关内容