我需要使用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
但是,我需要一个帧编号覆盖而不是时间代码。任何帮助将不胜感激。
答案 0 :(得分:34)
您可以将drawtext filter与n
或frame_num
功能一起使用:
示例命令:
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}'
有关详细信息,请参阅drawtext filter documentation。