FFmpeg 缩放不是平滑居中(而是锯齿形)

FFmpeg zoom not smooth-centered (but zigzag)

我尝试使用 FFmpeg 执行基本的 zoompan。我有一个输入图像 (.png 1280x720),我从中创建了一个 8 秒的视频 (.mp4 320x180),带有缩放功能。这是我的命令:

ffmpeg -loop 1 -i in_img.png -c:v libx264 -pix_fmt yuv420p -strict experimental -framerate 25 -vf zoompan=z='min(zoom+0.011835363,2.1835363)':d=375:x=400:y=247 -s 320x180 -t 00:00:08.882 out_vid.mp4

一切正常...但缩放效果不佳。它是曲折的。

有谁知道如何让它缩放平滑,比如居中? (而且不是先左后右)

谢谢

编辑


我通过稍微修改 -vf 过滤器中的 'x' 和 'y' 向解决方案迈进了一小步(命令的其余部分与上面相同):

-vf zoompan=z='min(zoom+0.022,3.25)':d=375:x='if(gte(zoom,3.25),x,x+8.24)':y='if(gte(zoom,3.25),y,y+4.72)':s=1280x720

我每帧都xy(对于x +8.24,对于y +4.72,我知道这些值是因为我知道到达结束缩放状态需要多少帧) 以便它将移动到其结束缩放状态坐标(1011,582),参见图像:

This is the video of the result,如您所见,它没有产生之字形效果,但现在看起来它先到中心,然后到缩放结果。还是那只是错觉?? 有什么想法吗?

从缩放级别 1 (1280x720) 缩放到缩放级别 5 (256x144) 并平移到右下角,最终位置 (1011,568) 在 125 帧中,并输出视频作为 320x180,使用

-vf zoompan=z='min(zoom+0.0320,5)':d=125:x='(iw-(iw/zoom))*(1011/1024)': \
                                         y='(ih-(ih/zoom))*(568/576)',scale=320x180

其中 0.0320(final zoom - initial zoom) / frames to zoom in 的除法,1024input width - final width576input height - final height

FFmpeg 似乎无法平滑插值,因此精细的缩放和平移会出现抖动。