ffmpegcomputer-vision

Frame Number Overlay With FFmpeg


I need to overlay the frame number to each frame of a video file using ffmpeg for windows.

I succeeded in overlaying a timecode stamp with the drawtext filter using this code:

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

However, I need a frame number overlay and not a timecode one. Any help would be appreciated.


Solution

  • You can use the drawtext filter with the n or frame_num function:

    enter image description here
    Looping 5 fps example

    Example command:

    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
    

    You could add additional text if desired, but be aware that you have to escape some special characters:

    text='Frame\: %{frame_num}'
    

    enter image description here

    See the drawtext filter documentation for more info.