在用图像创建mp4幻灯片时,我在线上使用了一些zoompan的示例,但是我仍然不太了解如何使它们从图像中的特定位置开始。这是典型的命令:
ffmpeg -i image-000.jpg -filter_complex“ color = c = black:r = 60:s = 1920x1080 [demo]; [0:v] format = pix_fmts = yuva420p,scale = 8000:-1,zoompan = z ='min(zoom + 0.0005,1.2)':s = 2000x1333:d = 360:x ='if(gte(zoom,0.9),x,x + 1 / a)':y ='if(gte (zoom,0.9),y,y + 1)',fade = in:0:25:alpha = 1,setpts = PTS-STARTPTS + 0.0 / TB [v0]; [demo] [v0] overlay = format = yuv420 ” -t 6 -c:v libx264 -y out000.mp4
我使用的照片的纵横比通常为3x2或4x3,因此我认为必须在16x9的视频中将其剪切掉。上面的代码(以及许多其他的“肯恩·伯恩斯效果”样本)的作用是,它们从图像的底部开始被切除,然后放大或缩小,而从不显示底部。
如何使动画从图像的下方开始?我在y ='...'部分所做的任何操作均不影响动画。甚至不输入0到100000之间的常数,而不是调整该公式 y ='if(gte(zoom,0.9),y,y + 1)'中的值。
注意:对于原始图像,使用 crop 或 pad 取得了一些成功,但是我宁愿了解如何更好地在图像内部放置zoompan。
答案 0 :(得分:1)
由于缩放永远不能小于1,因此在expr 'if(gte(zoom,0.9),x,x+1/a)
中,gte(zoom,0.9)
将始终为true,并且expr将始终为x
。 x初始化为0,因此expr始终为0。与y expr相同。
使用
y='if(on,y-1,ih-ih/zoom)
从底部开始动画并向上移动。 on
是输出帧数,从零开始,因此第一帧设置在底部,然后每帧向上移动1个像素。