ffmpeg:在定义区域内平滑滚动图像和文本

ffmpeg:在定义区域内平滑滚动图像和文本

我知道如何使用以下命令将图片从视频底部滚动到顶部:

ffmpeg -f lavfi -i color=s=1920x1080 -loop 1 -t 0.08 -i "input.jpg" -filter_complex "[1:v]scale=1920:-2,setpts=if(eq(N\,0)\,0\,1+1/0.02/TB),fps=25[fg]; [0:v][fg]overlay=y=-\'t*h*0.02\':eof_action=endall[v]" -map "[v]" output.mp4

但我希望图像和文本从底部的位置开始出现并平滑滚动并消失在顶部的位置,如下图所示。 在此处输入图片描述

答案1

我们可以从背景图像中裁剪出相关区域,将滚动的文本叠加在裁剪的区域上,并将结果叠加到背景图像中的相同区域。


例子:

bk.jpg
背景图片-提前准备:
在此处输入图片描述

input.jpg
前景图像-提前准备(样本分辨率为270x257): 在此处输入图片描述


示例命令:

ffmpeg -y -loop 1 -r 25 -i bk.jpg -loop 1 -r 25 -i input.jpg -filter_complex "[0:v]crop=270:257:360:55[c0];[c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg];[0:v][fg]overlay=x=360:y=55:eof_action=endall" -t 50 output.mp4


  • [0:v]crop=270:257:360:55[c0]- 从背景中裁剪 270x257 区域。
  • [c0][1:v]overlay=y='257-t*257*0.04':eof_action=endall[fg]- 将滚动的文本覆盖在裁剪的区域上。
  • [0:v][fg]overlay=x=360:y=55:eof_action=endall- 覆盖[fg]在背景图像上(在裁剪区域的同一位置)。

缩小结果:
在此处输入图片描述

相关内容