帧数覆盖与FFmpeg

Kob*_*ano 30 ffmpeg

我需要使用ffmpeg for windows将帧编号覆盖到视频文件的每个帧.

我成功地drawtext使用以下代码将过滤器的时间码标记覆盖:

ffmpeg -i video.mov -vcodec r210 -vf "drawtext=fontfile=Arial.ttf: timecode='01\:00\:00\:00': r=25: x=(w-tw)/2: y=h-(2*lh): fontcolor=white: box=1: boxcolor=0x00000099" -y output.mov
Run Code Online (Sandbox Code Playgroud)

但是,我需要一个帧号覆盖而不是时间码.任何帮助,将不胜感激.

llo*_*gan 38

您可以将drawtext过滤器与nor frame_num函数一起使用:

在此输入图像描述
循环5 fps的例子

示例命令:

ffmpeg -i input -vf "drawtext=fontfile=Arial.ttf: text='%{frame_num}': start_number=1: x=(w-tw)/2: y=h-(2*lh): fontcolor=black: fontsize=20: box=1: boxcolor=white: boxborderw=5" -c:a copy output
Run Code Online (Sandbox Code Playgroud)
  • 您可能必须提供字体文件的完整路径,例如fontfile=/usr/share/fonts/TTF/Vera.ttf.
  • n/ frame_num从0开始,但您可以start_number使用示例中所示的选项使帧计数从1开始.

如果需要,您可以添加其他文本,但请注意,您必须转义一些特殊字符:

text='Frame\: %{frame_num}'
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

有关详细信息,请参阅drawtext过滤器文档.

  • 添加`fontsize = 200:`来实际看到的东西;) (3认同)