Create a video thumbnail grid

gif & images

// what it does

Creates a single contact-sheet image from the video. select='not(mod(n\,100))' keeps every 100th frame by frame index n, scale=320:180 resizes each pick, and tile=4x4 lays 16 of them into one 4-by-4 grid; -frames:v 1 outputs that composed grid as a single JPEG. Handy for a quick visual overview of a long video.

// shell

$ ffmpeg -i input.mp4 -vf "select='not(mod(n\,100))',scale=320:180,tile=4x4" -frames:v 1 thumbnail.jpg

// gotcha

The comma inside mod(n\,100) must be backslash-escaped because commas otherwise separate filters in the filtergraph — unescaped, the expression parses wrong. select works on frame index, not time: the 16 picks are frames 0, 100, ..., 1500, so a clip shorter than ~1500 frames won't fill all 16 tiles and the trailing cells stay blank.