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

如何用Python调用FFmpeg实现文本始终在XY轴居中?

解决FFmpeg drawtext文本居中偏移问题

你当前代码里的x = (v_width / 2) - 40和y = (v_height / 2) - 40是固定偏移,仅能适配特定长度的文本,文本长度变化后必然出现偏移。要实现无论文本长度如何都保持居中,需利用FFmpeg内置变量动态计算文本位置:

  • w:视频帧宽度
  • h:视频帧高度
  • text_w:当前绘制文本的宽度
  • text_h:当前绘制文本的高度

通过表达式让x等于视频宽度一半减去文本宽度一半,y等于视频高度一半减去文本高度一半,即可实现完美居中。如果需要额外内边距,可在该基础上加减固定值。

修改后的drawtext参数如下:

.drawtext(
    textfile="char_names.txt",
    fontfile="/storage/emulated/0/PyFiles/Helvetica-Bold.ttf",
    fontcolor="yellow",
    bordercolor="black",
    escape_text=True,
    start_number=0,
    fontsize="80",
    x="(w - text_w)/2",  # 水平居中
    y="(h - text_h)/2",  # 垂直居中
    borderw=4,
    line_spacing=3
)

若要保留你之前的额外偏移需求(比如让文本稍微向上向左移动40),可调整表达式:

x="(w - text_w)/2 - 40",
y="(h - text_h)/2 - 40"

这样无论文本长短,都会基于自身尺寸计算出居中位置,不会再出现偏移问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:07