ffmpeg 命令用于连接两个 mp3 文件

ffmpeg 命令用于连接两个 mp3 文件

我正在使用 ffmpeg 将两个 MP3 文件连接在一起,

我使用这个命令:

ffmpeg -y -i first.mp3 -i second.mp3 -filter_complex "[0:0][1:0] amix=inputs=2:duration=longest" -c:a libmp3lame output.mp3

它可以工作,但是有一个小问题,覆盖在一起!

我想要播放第一首歌曲,当它结束时,第二个文件开始(在输出文件中)

但现在它们同时开始。

我怎样才能更改该命令,使输出包含第一首歌曲,然后当第一首歌曲播放完毕后再播放第二首歌曲?

另外,我尝试过concat命令但没有用,我只能使用类似我发送的东西。

答案1

要跳过重新编码,请使用 concat 解复用器:

创建文本文件

file '/path/to/first.mp3'
file '/path/to/second.mp3'

进而

ffmpeg -f concat -i list.txt -c copy out.mp3

如果重新编码没问题,

ffmpeg -i first.mp3 -i second.mp3 -filter_complex [0:a][1:a]concat=n=2:v=0:a=1 out.mp3

答案2

通常,

cat first.mp3 second.mp3 > out.mp3

应该可以正常工作。你没有说当你尝试时出了什么问题。

或者,你可以使用mp3wrap

mp3wrap out.mp3 first.mp3 second.mp3 third.mp3 ...

这不会像以前那样重新编码 MP3 ffmpeg,它会保留 ID3 标签,您可以稍后使用再次拆分文件mp3split

我不建议使用ffmpeg或类似的程序,因为重新编码会导致质量损失。

答案3

您还可以使用cat [your files] > concat.mp3,这将生成具有多个标题和 ID3 标签的 mp3 文件。之后,您可以通过调用 来更正此问题mp3val -f -nb concat.mp3

相关内容