我想使用 drawtext 过滤器来呈现带有半透明白色文本和黑色边框的字符串。
但是,过滤器绘制字符的方式似乎存在已知限制,导致在启用边框时不遵守字体颜色 alpha。这记录在这里https://trac.ffmpeg.org/ticket/3571
我的问题是是否有办法以某种方式解决这个问题,也许使用 filter_complex 绘制没有边框的文本,然后使用覆盖过滤器以某种方式再次绘制带有边框的文本并将其覆盖在初始文本上以获取边框,从而实现相同的带有黑色边框的不透明白色文本。
当前命令:
ffmpeg \
-f lavfi \
-i "color=red:size=1920x1080" \
-vf "
drawtext=fontfile=/Library/Fonts/Arial.ttf:text=BORDER_OFF:fontcolor=white@0.3:fontsize=250:x=20:y=20,
drawtext=fontfile=/Library/Fonts/Arial.ttf:text=BORDER_ON:fontcolor=white@0.3:fontsize=250:x=20:y=20+(text_h+10):borderw=3:bordercolor=black@0.3" \
-frames:v 1 \
output.png
Run Code Online (Sandbox Code Playgroud)
完整输出:
ffmpeg -f lavfi -i "color=red:size=1920x1080" -vf "drawtext=fontfile=/Library/Fonts/Arial.ttf:fontcolor=white@0.3:fontsize=250:x=20:y=20:text=BORDER_OFF,drawtext=fontfile=/Library/Fonts/Arial.ttf:fontcolor=white@0.3:borderw=3:bordercolor=black@0.3:fontsize=250:x=20:y=20+(text_h+10):text=BORDER_ON" -frames:v 1 output.png
ffmpeg version N-94664-g0821bc4eee-tessus https://evermeet.cx/ffmpeg/ Copyright (c) 2000-2019 the FFmpeg developers
built with Apple LLVM version 10.0.1 (clang-1001.0.46.4)
configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr …Run Code Online (Sandbox Code Playgroud) ffmpeg ×1