FFMPEG 图像到视频 zoompan 起始位置
FFMPEG Image to video zoompan starting position
在用图像创建 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 视频的某处被剪掉。上面的代码(以及许多其他 "Ken Burns effect" 示例)的问题是它们从图像的底部被截断开始,然后放大或缩小,从不显示底部。
如何让动画在图像的下方开始播放? 我在 y='...' 部分所做的任何事情都不会影响它。甚至不输入 0 到 100000 之间的常数,而不是调整该公式中的值 y='if(gte(zoom,0.9),y,y+1)'.
注意:我对原始图像使用 crop 或 pad 取得了一些成功,但我更想了解如何图像内部更好的位置 zoompan。
由于缩放永远不会小于 1,因此在 expr 'if(gte(zoom,0.9),x,x+1/a)
中,gte(zoom,0.9)
将始终为真,并且 expr 的计算结果将始终为 x
。 x 初始化为 0,因此 expr 的计算结果始终为 0。与 y expr 相同。
使用
y='if(on,y-1,ih-ih/zoom)
从下往上开始动画。 on
是输出帧数,从零开始,所以第一帧设置在底部,然后每帧向上移动一个像素。
在用图像创建 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 视频的某处被剪掉。上面的代码(以及许多其他 "Ken Burns effect" 示例)的问题是它们从图像的底部被截断开始,然后放大或缩小,从不显示底部。
如何让动画在图像的下方开始播放? 我在 y='...' 部分所做的任何事情都不会影响它。甚至不输入 0 到 100000 之间的常数,而不是调整该公式中的值 y='if(gte(zoom,0.9),y,y+1)'.
注意:我对原始图像使用 crop 或 pad 取得了一些成功,但我更想了解如何图像内部更好的位置 zoompan。
由于缩放永远不会小于 1,因此在 expr 'if(gte(zoom,0.9),x,x+1/a)
中,gte(zoom,0.9)
将始终为真,并且 expr 的计算结果将始终为 x
。 x 初始化为 0,因此 expr 的计算结果始终为 0。与 y expr 相同。
使用
y='if(on,y-1,ih-ih/zoom)
从下往上开始动画。 on
是输出帧数,从零开始,所以第一帧设置在底部,然后每帧向上移动一个像素。