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

如何在FFmpeg drawtext滤镜中设置字符间距(字距调整)

FFmpeg drawtext滤镜实现字符间距(字距)调整

FFmpeg的drawtext滤镜确实没有名为letter_spacing的参数,但有几种实用方法可以实现字符间距调整,以下是具体方案:

1. 直接使用spacing参数(最简单)

drawtext内置的spacing参数就是用来控制字符间额外间距的,这是最直接的解决方案:

示例命令:

ffmpeg -i input.jpg -vf "drawtext=text='你好,世界':fontsize=40:fontcolor=white:x=100:y=100:spacing=8" output.jpg
  • spacing=8:设置字符间的额外间距,单位为像素,数值越大间距越宽,可根据需求调整正负值(负值会缩小间距)
  • 其他参数如fontsize、fontcolor、x/y可按需修改

2. 启用text_shaping配合letter_spacing(适合新版FFmpeg)

在FFmpeg 4.4及以上版本中,启用text_shaping=1后,可以使用letter_spacing参数更精细地控制字距(部分场景下比spacing兼容性更好,尤其是处理复杂排版的字体):

示例命令:

ffmpeg -i input.jpg -vf "drawtext=text='HELLO WORLD':fontsize=40:fontcolor=white:x=100:y=100:text_shaping=1:letter_spacing=6" output.jpg
  • text_shaping=1:开启高级文本排版引擎,激活letter_spacing参数
  • letter_spacing=6:设置字符间的额外间距,单位为像素

3. 动态X坐标偏移(灵活定制场景)

如果需要更灵活的间距控制(比如不同字符用不同间距),可以利用expand=1参数让每个字符独立渲染,通过X坐标的表达式实现动态偏移:

示例命令:

ffmpeg -i input.jpg -vf "drawtext=text='自定义间距':fontsize=40:fontcolor=white:x='100 + 12*(n)':y=100:expand=1" output.jpg
  • expand=1:将文本拆分为单个字符,n变量代表当前字符的索引(从0开始)
  • 12*(n):每个字符的X坐标比前一个多12像素,这个数值就是额外字距,可根据需求修改
  • 基础X坐标为100,Y坐标固定为100,可按需调整

内容的提问来源于stack exchange,提问作者Kiran Shaji Augustine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:12:56