帧数覆盖与FFmpeg

时间:2013-03-12 15:06:33

标签: 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

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

1 个答案:

答案 0 :(得分:34)

您可以将drawtext filternframe_num功能一起使用:

enter image description here
循环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
  • 您可能需要提供字体文件的完整路径,例如fontfile=/usr/share/fonts/TTF/Vera.ttf
  • n / frame_num从0开始,但您可以使用start_number选项使帧计数从1开始,如示例所示。

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

text='Frame\: %{frame_num}'

enter image description here

有关详细信息,请参阅drawtext filter documentation