Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I use gframecatcher to generate thumbnail video galleries, i.e. something like this:

enter image description here

However this is a GUI tool and I want to create recursively a gallery for every video in a directory structure, so I am looking for a fast command line tool to do this.

share|improve this question

5 Answers 5

up vote 6 down vote accepted

Pull out the image captures (these are 100 pixels tall, and keep aspect ratio), the rate (-r) is per-second (this yields one frame every ~5 minutes), this also adds time stamp to output image.

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

Then use ImageMagick to build your gallery image:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png
share|improve this answer
You can use fractions for the rate (-r). This makes it easier and more accurate to specify times. 5min = 300 seconds ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png. –  DutGRIFF May 13 '14 at 18:28

The 'imagemagick' package has utilities for stuff like this.


There are API libraries using imagemajick for a bunch of languages too.

share|improve this answer
What would be the corresponding command? –  student Feb 5 '13 at 11:50
convert is probably the most general one. Look at the section headed General Thumbnail Creation on the first page I linked to. –  goldilocks Feb 5 '13 at 14:20

This one seems to fit the bill, it's free and open source and even works on Windows :)

It even has advanced stuff, like instead of blindly picking any frame at the particular interval, it can pick ones that are close enough but don't look too blurry, so instead of doing this:


You can pass it a parameter (-D6) so it does this:

better screenshot

Plus I really like no borders, so that the images can be slightly bigger.

share|improve this answer

I like using an easy to use unix command line bash script called VCS - Video Contact Sheet. Their official page: http://p.outlyer.net/vcs/

Its a lot easier to use even easier than a GUI

''It is a bash script meant to create video contact sheets (previews) aka thumbnails or previews of videos. Any video supported by mplayer and ffmpeg can be used by this script. '' You will need to have either ffmpeg or mplayer installed on your system.


vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

How the command works

Edit input-filname to the name of your video file!

  • -U0 (no name in footer - or else it displays the host name - note this is zero not the letter O)

  • -i 1m (sets the capture time interval in mins - in this case it's every minute - you could also use -n instead which sets the number of captures for example -n 21 will create 21 images, but don't use both)

  • -c sets number of columns (here it's 3 columns)

  • -H 200 -a 300/200 (sets size and aspect so file is not too big - seems you have to do both)

  • -o filename.jpg (use .jpg as the default as .png is too big - and change the filename to one of your choice !)

share|improve this answer

There is a solution from ffmpeg forum.

To make multiple screenshots and place them into a single image file (creating tiles), you can use FFmpeg's tile video filter, like this:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

That will seek 10 seconds into the movie, select every 1000th frame, scale it to 320x240 pixels and create 2x3 tiles in the output image out.png.

Original post here - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.