带有 jpg 背景和本地时间戳的 ffmpeg 到 udp 输出

ffmpeg with jpg background and localtime stamp to udp output

我想制作一个jpg背景并将本地时间显示在屏幕上,然后直播到udp,以便其他应用程序可以接收到这个,以下命令已尝试:

ffmpeg -loop 1 -i background.jpg -vcodec libx264 -preset ultrafast -r 30 -vf drawtext="fontsize=120:fontfile=FreeSerif.ttf:rate=25:text=%{localtime\}:x=(w-text_w)/2:y=(h-text_h)/2:box=1: boxcolor=white@0.75" -f mpegts udp://127.0.0.1:20000

看起来不错,但是当我通过 mpv 或 vlc 尝试结果时 mpv udp://127.0.0.1:20000

屏幕显示时间很慢,怎么回事?

FFmpeg 旨在尽可能快地处理媒体,因此打印的时间戳对应于应用 drawtext 过滤器的时间。

您可以使用实时过滤器来限制处理速度。

ffmpeg -loop 1 -i background.jpg -vcodec libx264 -preset ultrafast -r 30 -vf realtime,drawtext="fontsize=120:fontfile=FreeSerif.ttf:rate=25:text=%{localtime\}:x=(w-text_w)/2:y=(h-text_h)/2:box=1: boxcolor=white@0.75" -f mpegts udp://127.0.0.1:20000