FFMPEG图像到视频zoompan的起始位置

时间:2018-08-02 19:22:28

标签: video ffmpeg video-encoding

在用图像创建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。

1 个答案:

答案 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个像素。