Generating thumbnails/screenshots of a video is useful in many ways. Youtube and many other video sites use this to show a preview of the video as a small thumbnail. Google video captures a series of thumbnails from a video at various time intervals to show a better video preview.
There is a simple way to generate thumbnails in Linux using ffmpeg, a very very useful tool for processing videos. Let us generate a thumbnail for this video. Download the video and rename it to test.avi.
Then, run this command,
ffmpeg -itsoffset -4 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg
This command generates a 320×240 sized PNG thumbnail at the 4th second in the video. The output looks like this.
![]()
If you do not have ffmpeg installed and are using Debian/Ubuntu, do,
sudo apt-get install ffmpeg
A series of thumbnails, at 4, 8, 12 and 16 seconds.
![]()
![]()
![]()
![]()
ffmpeg -itsoffset -4 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg
ffmpeg -itsoffset -8 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg
ffmpeg -itsoffset -12 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg
ffmpeg -itsoffset -16 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320x240 test.jpg
useful links
- Create a random thumbnail of a video file
- http://www.danielfischer.com/2007/06/27/how-to-use-ffmpeg-to-convert-video-via-ruby-on-rails/
Happy thumbnailing!
3 Trackbacks
[...] Creating Video Thumbnails using FFmpeg (for -itsoffset) [...]
[...] Create Video Preview Thumbnails with Ffmpeg VN:F [1.2.3_620]please wait…Rating: 0.0/10 (0 votes cast)See http://blog.prashanthellina.com/2008/03/29/creating-video-thumbnails-using-ffmpeg/ [...]
[...] http://blog.prashanthellina.com/2008/03/29/creating-video-thumbnails-using-ffmpeg/ [...]
21 Comments
how if my filename is with space instead?!
ex: my video.avi
thanks for reply
Try enclosing the filename in double quotes like this –> “my video.avi”
still no effect..
i trying to upload
$filePath = $uploadDir.$fileName;
ffmpeg -i “.$filePath.” -y -s 320×240 -ab 32000 -ar 22050 -g 160 -cmp 3 -subcmp 3 -mbd 2 -flags aic+cbp+mv0+mv4+trell “.$convPath
where $filePath is source path where files is already uploaded.
upload is successfull but when ffmpeg start to conversion i got no files at $convPath.but vice versa if i use filename with no spaces instead.
The command you posted here is missing a ” at the end. When the command runs, does it throw any errors?
Using “-ss” rather than “-itsoffset” is considerably faster. e.g. ffmpeg -ss 12 -i test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320×240 test.jpg
Thanks for the info, Mike.
Hi, is there any possibility to create thumbnails in windows environment
Sagar, I have not tried it, but I think ffmpeg can be compiled for windows.
Thanks Prashanth Ellina…
if you canot instal ffmpeg on the server is there another option to generate thumbnails on linux
@mike , Very useful command , thanks .
It is not work on Linux
Help?? Please make it work on Linux
Sorry, I can creat video thumbnails using ffmpeg when the video is in other server????? for example:
ffmpeg -itsoffset -4 -i http://www.otherserver.com/test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320×240 http://www.myserver.com/test.jpg
Hi
is it possible to execute the following command on server1 and the video is situated at server two and we want to create thumbnail at server 3
ffmpeg -itsoffset -16 -i server2/home/test/test.avi -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320×240 server3/home/test/test.jpg
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']);
$myphoto = “user/”.$v.”/photo/”.$rname[0].”.jpg”;
exec (“ffmpeg -itsoffset -4 -i “.$target_path.” -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320×240 “.$myphoto);
when i run this command in photo directory there is no thumbnails …….
when i run this command on command prompt as
ffmpeg -itsoffset -4 -i life.jpg -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320×240 life.flv
errors comes as…….
could not find codec parameters
when i run this command on command prompt as
ffmpeg -itsoffset -4 -i life.flv -vcodec mjpeg -vframes 1 -an -f rawvideo -s 320×240 life.jpg
again errors comes as…….
could not find codec parameters
instead of extracting one image,can i extract a number of images in a single line command(not using loop)?
hi i want to extract(thumbnails) images from video in equal interval im using ffmpeg for image extraction but i dont know how to generate images in equal interval is there any shell script to fulfill this operation (E.G. suppose that i uploaded a video and i dont know the length of the video and it extracts 5 images from the video in equal interval )
please help
If you’re trying to do this server side and you have physical access to the server, you can run ffmpeg directly from the CLI using exec().
I’ve been trying to create video thumbnail file using wampserver. I managed to install ffmpeg but I don’t know how to use in my script. I’m new to php. please any suggestion. Thank in advance
It works! thanks