如何根据分辨率在ffmpeg中设置drawtext字体大小

问题描述 投票:0回答:2

如何根据各个分辨率的宽度和高度,按一定比例设置视频上drawtext的字体大小?

ffmpeg -i Input.mp4 -vf drawtext="fontfile=OpenSans-Regular.ttf: \
text='New Music Video': fontcolor=white: fontsize=?: r=25: box=1: [email protected]: \ boxborderw=3: x=(20)/2: y=(h-text_h-20) " Output.mp4

我问这个问题是因为当我将其设置为 24

fontsize=24
例如,当转换完成时,它的大小在其他分辨率下是不同的。

ffmpeg scaling drawtext
2个回答
8
投票

自 ffmpeg 版本 3.4 起,视频滤镜

drawtext
在其
fontsize
参数中支持算术表达式。例如,身高除以 30:

-vf drawtext="fontsize=(h/30): x=(w-text_w)/2: y=(h-text_h*2): text='Hello, World!': fontcolor=white: box=1: [email protected]: boxborderw=5"

这将在 720p 视频上使用字体大小 24,在 1080p 视频上使用字体大小 36。

另请参阅 有关如何使用过滤器的更多示例

drawtext
ffmpeg 文档


6
投票

我也遇到过这个问题,这是我的解决方案:使用各种分辨率的对角线比率,缩放文本大小

详情如下:

  1. 在您最常用的分辨率中找到合适的文本大小。例如 文字大小=65 分辨率=1920*1080
  2. 用目标视频分辨率的对角线除以1920*1080的对角线,然后乘以你合适的文字大小(65),结果就是你想要的

kotlin 代码在这里:

(Math.sqrt((videoWidth*videoWidth + videoHeight*videoHeight).toDouble()) / 2203 * textsize).toInt()
© www.soinside.com 2019 - 2024. All rights reserved.