我知道如何使用 zoompan 通过 1 张图像制作 5 秒视频“放大”效果。
ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='min(zoom+0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" zoomin.mp4
如何制作“缩小”视频?
尝试了以下方法但都不起作用:
ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='min(zoom-0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" zoomout.mp4
ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='max(1.5,zoom-0.0015)':d=125" -c:v libx264 -t 5 -s "800x450" zoomout.mp4
ffmpeg -loop 1 -i image_1.jpg -vf "zoompan=z='max(zoom-0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" zoomin.mp4
答案1
您必须首先设置缩放系数,因为默认情况下它设置为 1.0。我可以这样做:
ffmpeg -loop 1 -i image_1.jpg -vf "zoompan=z='if(lte(zoom,1.0),1.5,max(1.001,zoom-0.0015))':d=125" -c:v libx264 -t 5 -s "800x450" zoomout.mp4
每次迭代时,它将从 1.5 开始放大,然后缩小 0.0015。请注意,使用值 1.001(任何大于 1.0 的值)以确保它不会缩小超过 1.0 并重置为 1.5。
另一个解决方案可能是简单地反转原始 zoompan 的输出,但经过快速搜索后,在 ffmpeg 中反转视频似乎需要付出很多努力。
答案2
根据帧索引(开)和持续时间计算 z。
on/duration
将获得从 0 到 1 的每个帧增长的百分比。
1.5-on/duration*0.5
给你一个 1.5-1 之间的数字。
全部一起:
ffmpeg -loop 1 -i image1.jpg -vf "zoompan=z='1.5-on/duration*0.5':d=125" -c:v libx264 -t 5 -s "800x450" zoomin.mp4