如何使用ffmpeg在视频上叠加多个动画图像

时间:2018-04-09 12:53:12

标签: video ffmpeg overlay editing

我正在尝试使用“旋转”滤镜为其添加动画后,在视频上叠加多个图像。我在旋转滤镜中使用 t 参数使动画有点随意,所以我必须将输入视频标记为循环(使用-loop标志)。 问题是当我只执行一个单一覆盖时,结果就是预期的结果,但是当第二个覆盖进入命令时,它突然结束并且正在生成空输出视频。 下面是我正在使用的命令:

ffmpeg -y -i template.mp4 -loop 1 -i Image_1.jpg -i Image_2.jpg -filter_complex " \
[1:v]scale=186:136[scaled1]; \
[scaled1]format=rgba,colorchannelmixer=aa=0.7[transp1]; \
[transp1]rotate=20*sin(2*PI/(t-9)):c=0xFFFFFF00:ow=250:oh=250,fade=in:st=1:d=5[ANIM_F1]; \
[2:v]scale=136:186[scaled2]; \
[scaled2]format=rgba,colorchannelmixer=aa=0.7[transp2]; \
[transp2]rotate=20*cos(2*PI/(t-9)):c=0xFFFFFF00:ow=250:oh=250,fade=in:st=1:d=5[ANIM_F2]; \
[0][ANIM_F1] overlay=x=1:y=190:shortest=1:enable='between(t,5,15)'[PHASE1]; \
[PHASE1][ANIM_F2] overlay=x=480:y=380:shortest=1:enable='between(t,10,20)'[out]" \
-map [out] output.mp4

1 个答案:

答案 0 :(得分:1)

在本节中,

-i template.mp4 -loop 1 -i Image_1.jpg -i Image_2.jpg

视频没有循环,第一张图像是,第二张图像不是。由于第二张图像没有循环播放,因此旋转或叠加滤镜只能使用一帧。假设您的视频超过20秒,则只需循环第二张图像。

-i template.mp4 -loop 1 -i Image_1.jpg -loop 1 -i Image_2.jpg