如何用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
相关产品推荐
相关产品推荐

