Generating a thumbnail / screenshot of a video has many uses. Many video websites out there, including the ever popular YouTube, use this function to show a static preview of the video through a screen grab or set of screen grabs in image format. You may think it is difficult to create thumbnails from a video file. But I'm here to say 'no, it's not'!
To accomplish this task, I made use of this tool: FFmpeg. First a little information about FFmpeg. If you haven't come across this yet then you're missing out on an excellent bit of software to put in your tool kit. It can convert and stream all manner of video and audio files, it is open source (under LGPL, but with some optional GPL bits), and it is constantly being worked on and developed, thus improved.
Once I had these tools installed, I was ready to begin utilising FFmpeg to convert a specific point in a video file to a thumbnail image. Using the FFmpeg documentation as resources, I eventually arrived at the following command (which should all be on one line) for generating a thumbnail:
ffmpeg -y -i /path/to/video.avi -f mjpeg -1 -ss 10 -vframes 1 -s 120x90 -an /path/to/picture.jpg
The key components of that command are:
- f mjpeg: specifies that the output should be a JPG
- ss 10: sets that image should be taken from the point 10 seconds from the beginning
- s 120x90: sets the dimension of the image that would be generated
You could use Imagemagick to resize or edit the image generated if you wish, as ffmpeg is not really designed for this.
A tip to consider if you're taking user input for the video file or output image file, then please remember to escape your variables accordingly! Use something like the escapeshellcmd() PHP function.