是否可以在 ffmpeg 中为文本添加笔画?

Sve*_*jic 1 text ffmpeg stroke

我想在 ffmpeg 中的文本中添加黑色描边。是否可以?

-c:v libx264 -vf "hue=h=0, drawtext=fontfile=../bin/RobotoCondensed-Bold.ttf:text='Hello.':fontcolor=white: fontsize=158: x=0+(w-text_w)/2: y=50+(h-text_h-line_h)/2" -c:a copy -shortest -pix_fmt yuv420p ../bin/ENG_01.mov
Run Code Online (Sandbox Code Playgroud)

Rom*_*dez 8

您可以通过使用drawtext并添加这些参数来更改边框颜色和边框宽度

bordercolor=black:
borderw=5:
Run Code Online (Sandbox Code Playgroud)

你的代码看起来

-c:v libx264 \
-vf "hue=h=0,\
  drawtext=fontfile=../bin/RobotoCondensed-Bold.ttf:\
   text='Hello.':\
   bordercolor=white:\
   borderw=5:\
   fontcolor=white:\
   fontsize=158:\
   x=0+(w-text_w)/2: y=50+(h-text_h-line_h)/2"\
 -c:a copy -shortest -pix_fmt yuv420p \
../bin/ENG_01.mov
Run Code Online (Sandbox Code Playgroud)


llo*_*gan 5

使用字幕过滤器而不是绘图文本来添加完整描边更容易。

字幕过滤器

在此输入图像描述

ffmpeg将应用ASS 文件中设置的Outline和选项。OutlineColour或者您可以在命令中手动设置这些ffmpeg,这对于不支持笔画的其他字幕格式很有用:

ffmpeg -i input -filter_complex "subtitles=your_subtitles_file.srt:force_style='Outline=5,OutlineColour=&H000000&'" output
Run Code Online (Sandbox Code Playgroud)

来自高级变电站 Alpha 标签

颜色代码以十六进制形式按蓝绿红顺序给出。请注意,这与 HTML 颜色代码的顺序相反。颜色代码必须始终以 开头&H和结尾&。默认OutlineColour为黑色 ( &H000000&)。

绘制文本过滤器

在此输入图像描述

使用borderwbordercolor选项:

ffmpeg -i input -filter_complex "drawtext=text='drawtext stroke':fontsize=36:fontcolor=white:borderw=4:bordercolor=black:x=(w-text_w)/2:y=(h-text_h)/2" output
Run Code Online (Sandbox Code Playgroud)
  • bordercolor可以接受十六进制值,您还可以更改笔画不透明度,例如使用bordercolor=#ffcc00@0.5.

  • 有关详细信息,请参阅绘图文本过滤器文档。