我正在使用 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
。