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

FFmpeg drawtext滤镜如何正确求值表达式显示帧号倍数

drawtext滤镜表达式计算的正确写法

报错原因

直接写%{n*50}触发报错,是因为drawtext的文本插值规则中,未加特殊前缀的%{<内容>}结构仅会匹配内置的固定变量名(比如直接引用帧号n、时间戳pts、播放时间t这类预定义变量),不会对括号内的内容做算术运算解析。滤镜会把n*50识别为一个不存在的自定义变量名,因此抛出「not known」错误。

正确语法

如果需要对包含变量的表达式做计算后再显示结果,必须在%{}内的开头添加e:前缀,明确告知滤镜后续内容是需要求值的算术表达式,格式为:
%{e:<计算表达式>}

对应需求的可运行命令

ffmpeg -y -r 25  -pattern_type glob -i '*.jpg' -vf "text='%{e:n*50}': start_number=0: x=0: y=0: fontcolor=black: fontsize=30: box=1: boxcolor=white: boxborderw=5" -c:a copy movie.mp4

补充说明

  • 该表达式支持FFmpeg滤镜通用的所有算术逻辑,加减乘除、取模、条件判断都可正常写入,例如要显示当前帧对应的毫秒数、帧号奇偶判断结果都可以用该格式实现。
  • 如果需要对计算结果做格式化(比如固定位宽补零、指定小数位数),可以在表达式后追加格式化参数,注意不同shell环境下格式化参数前的冒号需要做转义,例如要输出3位宽度、前补零的计算结果,Linux bash环境下写法为%{e\:n*50\:d}。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:39:22