使用 lavfi 设置 ffmpeg 叠加过渡的持续时间

使用 lavfi 设置 ffmpeg 叠加过渡的持续时间

我正在使用此命令将叠加的图像从黑色背景中滑出并向右滑动。

ffmpeg -f lavfi -i color=color=black:d=15:size=1920x1080,format=rgba[background]; movie=pinkimage.png[overlay]; [background][overlay]overlay='min(n*5-0\,1920):(H-h)/2'" output.mp4

我理解,对“n”参数的操作会影响过渡速度,但我不明白为什么或如何。我希望它对视频的长度产生影响,视频长度为 15 秒,如这里设置的:“d=15”。

那么,我怎样才能让覆盖动画也花费 15 秒呢?

答案1

n表达式中的 指的是帧索引(从0开始)。

min(n*5-0\,1920)是 x 坐标的表达式。对于每一帧,都会计算此表达式,并将其结果用作覆盖帧左上角的 x 位置。该位置从背景/基帧的左上角开始测量。min 函数返回其两个参数中的最小值。对于给定的表达式,您将从开头的 x=0 开始,每帧向右移动 5 个像素。因此,要移动 1920 个像素,需要 1920/5 = 380 帧。对于 25 fps 的视频,这需要 15.2 秒。

要在15秒内到达,可以按如下方式设置表情t*1920/15

ffmpeg -f lavfi -i color=color=black:d=15:size=1920x1080,format=rgba -i pinkimage.png -filter_complex "[0][1]overlay=x='t*1920/15':y='(H-h)/2'" output.mp4

相关内容