You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用FFmpeg实现指定时间内按设定值变焦的视频效果?

解决FFmpeg变焦效果问题

修正zoompan滤镜的三个问题

针对你用zoompan时遇到的画面暂停、非中心变焦、尺寸缩小问题,直接给修正后的命令并解释:

ffmpeg -i in.mp4 -t 10 -vf "fps=60,zoompan=z='if(lte(t,2),1+0.1*t/2,1.1)':d=1:x='(iw-iw*z)/2':y='(ih-ih*z)/2':s=iw*ih,scale=iw:ih" -c:a copy out.mp4
  • 画面暂停解决:原命令d=1表示单帧停留1秒,直接锁死帧率为1;现在d=1配合前置的fps=60,让zoompan每帧生成一个输出帧,保持60fps流畅度
  • 中心变焦设置:x=(iw-iw*z)/2和y=(ih-ih*z)/2计算画面中心坐标,确保变焦始终以画面中心为基准
  • 尺寸保持:s=iw*ih指定zoompan输出尺寸与原视频一致,后续scale=iw:ih再次确认,避免变焦后画面缩小

修复scale+crop滤镜的报错问题

你之前的scale命令报错,是因为scale默认eval_mode=init(仅初始化时计算一次表达式),无法识别t这类随时间变化的变量。添加eval=frame即可解决:

ffmpeg -i in.mp4 -t 10 -vf "fps=60,scale='min(1.1*iw, iw + 0.1*iw*t/2)':-1:eval=frame,crop=iw:ih" out.mp4
  • min(1.1*iw, iw + 0.1*iw*t/2)实现2秒内从原尺寸平滑放大到1.1倍,之后保持最大缩放比例
  • eval=frame让scale滤镜每帧重新计算尺寸,支持t变量
  • crop=iw:ih裁剪回原视频尺寸,实现中心变焦的视觉效果

非FFmpeg替代工具

  • Blender命令行模式:写Python脚本实现缩放动画,用命令行批量渲染,无需打开GUI界面:
    blender -b -P zoom_animation.py
    
    脚本可设置视频导入、添加关键帧(0秒缩放1倍,2秒缩放1.1倍)、指定输出参数。
  • FFmpeg zoom滤镜:部分FFmpeg版本支持更简洁的zoom滤镜,无需复杂参数组合:
    ffmpeg -i in.mp4 -t 10 -vf "fps=60,zoom=z='if(lte(t,2),1+0.1*t/2,1.1)':x='(iw-iw*z)/2':y='(ih-ih*z)/2'" -c:a copy out.mp4
    

内容的提问来源于stack exchange,提问作者Highmastdon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:15:52