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

如何为FFmpeg的drawtext滤镜添加文字缩放(放大/缩小)效果?

使用FFmpeg drawtext滤镜实现文字缩放动画的命令示例

嘿,我来给你捋清楚怎么用FFmpeg的drawtext滤镜做出文字放大缩小的动态效果~核心是靠fontsize参数结合FFmpeg的表达式功能,让字体大小随时间自动变化,下面给你几个实用的例子:

基础循环缩放效果

这个命令会让文字在指定范围内循环放大缩小,适合做重复的动画:

ffmpeg -i input.mp4 -vf "drawtext=text='你的文字内容':x=(w-text_w)/2:y=(h-text_h)/2:fontsize='50+30*sin(2*PI*t/5)':fontcolor=white:shadowcolor=black:shadowx=2:shadowy=2" -c:a copy output.mp4

参数解释:

  • fontsize='50+30*sin(2*PI*t/5)':这是动画核心:
    • t代表当前时间(单位:秒)
    • sin(2*PI*t/5)让数值在-1到1之间循环,5表示每5秒完成一次完整的缩放循环(从原尺寸→放大→缩小→原尺寸),你可以改成自己想要的周期时长
    • 50是基础字体大小,30是缩放幅度,最终字体大小会在20(50-30)到80(50+30)之间变化,按需调整这两个数值即可
  • x=(w-text_w)/2:y=(h-text_h)/2:让文字始终居中,避免缩放时偏移出画面
  • fontcolor、shadowcolor等是美化参数,你可以根据需求修改颜色、阴影大小

单次放大/缩小效果

如果想要文字只放大一次然后保持尺寸,或者只缩小一次,用这个命令:

# 前3秒从50放大到100,之后保持100
ffmpeg -i input.mp4 -vf "drawtext=text='你的文字内容':x=(w-text_w)/2:y=(h-text_h)/2:fontsize='if(lt(t,3), 50+50*t/3, 100)':fontcolor=white" -c:a copy output.mp4

参数解释:

  • if(lt(t,3), 50+50*t/3, 100):意思是当时间t小于3秒时,字体大小从50线性增加到100;3秒后固定为100
  • 要是想做单次缩小效果,把表达式改成if(lt(t,3), 100-50*t/3, 50)即可,前3秒从100缩小到50,之后保持50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:39:47