我正在使用以下命令将两个视频文件合并在一起,将第二个视频文件覆盖在第一个文件的某个位置。结果是我想要的,但缺少叠加文件中的音频。ffmpeg.exe -y -hide_banner -ss 00:00:00.067 -i promo.mov -i tag.mov -filter_complex "[1:v]setpts=PTS+6.5/TB[a];[0:v][a]overlay=enable=gte(t\,6.5)[out]" -map [out] -map 0:a -map 1:a -c:v mpeg2video -c:a pcm_s16le -ar 48000 -af loudnorm=I=-20:print_format=summary -preset ultrafast -q:v 0 -t 10 complete.mxf
没有-map 0:a
,我根本听不到音频,但是第二个-map 1:a
无法传递-i tag.mov
的音频
我也尝试过amix
,但是它将两个片段中的音频从开头开始合并,并且我希望第二个文件中的音频在该文件开始覆盖时开始。
如果我可以在覆盖时降低第一个剪辑的音频,这也将很有帮助。
最佳答案
amix不支持在中途引入输入,因此解决方法是添加领先的静音功能。您可以使用adelay过滤器执行此操作。
在叠加时使第一个剪辑的音频降低
使用侧链压缩器可以做到这一点,该压缩器接收两个输入,并根据第二个输入的音量降低第一个输入的音量。
所以用ffmpeg.exe -y -hide_banner -ss 00:00:00.067 -i promo.mov -i tag.mov -filter_complex "[1:v]setpts=PTS+6.5/TB[1v];[0:v][1v]overlay=enable=gte(t\,6.5)[vout];[1:a]adelay=6.5s,apad,asplit=2[1amix][1aref];[0:a][1aref]sidechaincompress[0asc];[0asc][1amix]amix=inputs=2:duration=first[aout]" -map [vout] -map [aout] -c:v mpeg2video -c:a pcm_s16le -ar 48000 -af loudnorm=I=-20:print_format=summary -preset ultrafast -q:v 0 -t 10 complete.mxf