我有两个mp3文件,一个很长,一个很短(一首歌和一个广告)。我需要广告在歌曲开始15秒后播放歌曲。我还需要在广告之前和之后稍微淡出/淡出歌曲的音量。我尝试过使用amix和adelay,但只是不能正确使用它。
这里有一些接近但又破碎的东西。
ffmpeg -i song.mp3 -i ad.mp3 -filter_complex "amix=inputs=2:duration=first:dropout_transition=2;adelay=0|15000" output.mp3
如何让广告与歌曲正确混合?
答案 0 :(得分:2)
由于您希望歌曲在广告出现之前淡出一点,因此预先分割歌曲会更方便。
ffmpeg -i song.mp3 -i ad.mp3 \
-filter_complex "[0]asplit[a][b]; \
[a]atrim=duration=15,volume='1-max(0.25*(t-13),0)':eval=frame[pre]; \
[b]atrim=start=15,asetpts=PTS-STARTPTS[song]; \
[song][1]amix=inputs=2:duration=first:dropout_transition=2[post]; \
[pre][post]concat=n=2:v=0:a=1[mixed]" \
-map "[mixed]" output.mp3
音量表达式1-max(0.25*(t-13),0)
从13秒开始以每秒25%的速度减小音量,因此当混音开始时音量减少到一半。由于您不知道amix过滤器在与广告混合时会减少歌曲的音量,如果结果不可接受,您将不得不尝试使用费率因子0.25
。