我需要将 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
看这里了解更多信息。