46

我需要使用 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

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

4

1 回答 1

67

您可以将drawtext 过滤器norframe_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
  • 您可能必须提供字体文件的完整路径,例如fontfile=/usr/share/fonts/TTF/Vera.ttf.
  • n/从 0 开始,但您可以使用示例中所示frame_num的选项使帧计数从 1 开始。start_number

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

text='Frame\: %{frame_num}'

在此处输入图像描述

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

于 2013-03-12T19:04:32.520 回答