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



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

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

我问这个问题是因为当我将它设置为24 fontsize=24时,当转换完成时,它的大小在其他分辨率下是不同的。

从ffmpeg版本3.4开始,视频滤波器drawtextfontsize参数支持算术表达式。例如,高度除以30:

-vf drawtext="fontsize=(h/30): x=(w-text_w)/2: y=(h-text_h*2): text='Hello, World!': fontcolor=white: box=1: boxcolor=black@0.5: boxborderw=5"

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

请参阅ffmpeg文档中有关如何使用过滤器drawtext的更多示例。

我也面临过这个问题,这里是我的解决方案:使用各种分辨率的对角线的速率,缩放你的textsize

详细信息:

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

kotlin代码:

(Math.sqrt((videoWidth*videoWidth + videoHeight*videoHeight).toDouble()) / 2203 * textsize).toInt()

最新更新