ffmpeg drawtext 过滤框抖动问题

ffmpeg drawtext 过滤框抖动问题

使用 drawtext 过滤器创建帧计数 burnin 时,字符的高度变化会使文本在计数时垂直抖动。可以通过将“ascent”值应用于 y 坐标来停止这种情况。

但是,当此 drawtext 过滤器还包含帧数周围的框时,此元素也会垂直抖动,并且似乎没有办法应用使用“上升”值的相同方法来稳定它。

示例命令(字体与 macOS 相关):

ffmpeg -f lavfi -i "color=red:size=1280x720:rate=24" -y -t 12 -c:v mjpeg -qscale:v 4 -huffman default -pix_fmt yuvj422p -vf "drawtext=fontfile=/System/Library/Fonts/Geneva.dfont: fontcolor=white: fontsize=150: box=1: boxcolor=black: boxborderw=5: x=640: y=500-ascent: text=%{n}: start_number=0" output.mov

有人知道有什么方法可以防止这种情况发生吗?非常感谢。

完整未切割的命令:

ffmpeg 版本 N-93020-g3224d6691c-tessus https://evermeet.cx/ffmpeg/ 版权所有 (c) 2000-2019 FFmpeg 开发人员使用 Apple LLVM 版本 10.0.0(clang-1000.11.45.5)构建配置:--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 --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay libavutil 56. 26.100 / 56. 26.100 libavcodec 58. 44.100 / 58. 44.100 libavformat 58. 26.100 / 58. 26.100 libavdevice 58. 6.101 / 58. 6.101 libavfilter 7. 48.100 / 7. 48.100 libswscale 5. 4.100 / 5. 4.100 libswresample 3. 4.100 / 3. 4.100 libpostproc 55. 4.100 / 55. 4.100 输入 #0,lavfi,来自“color=red:size=1280x720:rate=24”:持续时间:N/A,开始:0.000000,比特率:N/A 流 #0:0:视频:rawvideo (I420 / 0x30323449),yuv420p,1280x720 [SAR 1:1 DAR 16:9],24 tbr,24 tbn,24 tbc 流映射:流 #0:0 -> #0:0 (rawvideo (原生) -> mjpeg (原生)) 按 [q] 停止,按 [?] 获取帮助 [swscaler @ 0x7fce5b00d800] 使用了弃用的像素格式,请确保正确设置了范围 输出 #0,mov,到“output.mov”: 元数据:编码器:Lavf58.26.100 流 #0:0: 视频:mjpeg (jpeg / 0x6765706A),yuvj422p(pc),1280x720 [SAR 1:1 DAR 16:9],q=2-31,200 kb/s,24 fps,12288 tbn,24 tbc 元数据:编码器:Lavc58.44.100 mjpeg 附加数据:cpb:最大/最小/平均比特率: 0/0/200000 缓冲区大小:0 vbv_delay:-1 帧=288 fps=0.0 q=4.0 Lsize=7103kB 时间=00:00:11.95 比特率=4865.5kbits/s 速度=19.7x 视频:7101kB 音频:0kB 字幕:0kB 其他流:0kB 全局标头:0kB 多路复用开销:0.027039%

答案1

对 drawtext 过滤器使用固定高度的等宽字体可以解决此问题。

参考此处的固定高度字体信息,并确保它也是等宽字体。 https://graphicdesign.stackexchange.com/questions/111439/is-there-a-font-that-has-the-same-height-for-every-character

相关内容