How to Create Video Contact Sheets with FFmpeg

This guide explains how to use the FFmpeg tile video filter to generate a contact sheet—a single image grid containing thumbnail previews of video frames. You will learn the essential command syntax, how to space out frame extraction, and how to customize the layout, size, and appearance of your final output grid.

The Standard Contact Sheet Command

To create a functional contact sheet, you must combine frame rate reduction with the tile filter. Generating a tile grid from raw video without reducing the frame rate will result in a massive image containing consecutive, nearly identical frames.

The standard command structure is:

ffmpeg -i input.mp4 -vf "fps=1/10,scale=320:-1,tile=4x3" output.png

How the Command Works:


Customizing the Tile Filter

The tile filter offers several parameters to customize the layout, spacing, and background color of your contact sheet.

Parameter Syntax:

tile=columnsxrows:padding=pixels:margin=pixels:color=color_name

Configuration Options:

Example with Custom Styling:

To create a 5x4 grid with 10 pixels of white padding and a 20-pixel outer margin:

ffmpeg -i input.mp4 -vf "fps=1/30,scale=240:-1,tile=5x4:padding=10:margin=20:color=white" contact_sheet.jpg

Tips for Best Results