在使用 FFmpeg 捕获的帧上添加时间戳

在使用 FFmpeg 捕获的帧上添加时间戳

我正在尝试使用 FFmpeg 捕获帧并在其中添加当前时间戳。

以下代码在 Linux PC 上运行良好:

ffmpeg -i  input -vf "drawtext=fontfile=/usr/share/fonts/TTF/Vera.ttf: text='%{localtime}': x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1" image%03d.png

但同样不适用于 Windows,因为:

  • 选项中应用的过滤器-vf
  • fontfile=/usr/share/fonts/TTF/Vera.ttf不适用于 Windows PC。
  • 其他一些东西也是无效的。

我尝试使用其他选项编辑并删除它,但没有任何效果。

  1. 我需要在 Windows 中使用 FFmpeg 捕获的图像上添加时间戳。
  2. 我如何才能添加精确到毫秒的时间戳——时间戳中不需要日期。

到目前为止我已经尝试过:

text='%{localtime\:%X}%{pts\:hms}'

以上打印了当地时间和 pts。我需要将两者相加并打印,这样才能得到完全正确的结果。

任何形式的帮助都将不胜感激。过去几个小时我一直在为此绞尽脑汁。

答案1

我让它工作了。只需在此处发布即可:

ffmpeg -i input -vf "drawtext=fontfile=/Windows/Fonts/Arial.ttf: text='%{localtime}': x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000000@1: fontsize=30" -r 25 -t 5 image%03d.png

答案2

另一种获取毫秒级时间戳的方法是

ffmpeg -i input.mp4 -vf drawtext="fontsize=60:fontcolor=yellow:text='%{e\:t*1000}':x=(w-text_w):y=(h-text_h)" output.mp4

相关内容