Warm tip: This article is reproduced from serverfault.com, please click

其他-FFmpeg:在特定时间后将一个视频覆盖另一个视频,包括音频

(其他 - FFmpeg: Overlay one over another video including audio after a specific time)

发布于 2020-12-02 21:22:33

代码摘自以下答案:FFmpeg-将一个视频覆盖到另一个视频上?然后进行一点修改。

ffmpeg -i stream1.mp4 -i stream2.mp4 \
-filter_complex "[1:v]setpts=PTS+5/TB[a]; \
                 [0:v][a]overlay=enable=gte(t\,5):shortest=1[out]; \
                 [0][1]amix[a]" \
-map [out] -map [a] \
-c:v libx264 -crf 18 -pix_fmt yuv420p \
-y output.mp4

stream1.mp4持续时间,例如:35秒,stream2.mp4持续时间,例如:30秒。我想在5秒钟后开始叠加(stream2.mp4)视频和音频。重叠(stream2.mp4)视频按预期方式开始。

但是覆盖(stream2.mp4)音频是从头开始的。我还如何在5秒钟后开始叠加(stream2.mp4)音频?

Questioner
Tarique Iqbal
Viewed
0
llogan 2020-12-03 05:26:28

添加adelay过滤器

ffmpeg -y -i stream1.mp4 -i stream2.mp4 \
-filter_complex "[1:v]setpts=PTS+5/TB[v]; \
                 [0:v][v]overlay=enable=gte(t\,5):shortest=1,format=yuv420p[out]; \
                 [1:a]adelay=5s:all=1[a1];[0][a1]amix[a]" \
-map [out] -map [a] \
-c:v libx264 -crf 18 \
output.mp4

如果你ffmpeg已过时,则必须使用毫秒,并为每个通道声明延迟,例如adelay=5000|5000