A week ago I was tasked with uploading about 20 different videos to a CMS. Normally for the HTML5 Video element to look nice, you should upload a poster image so that there can be something showing before the video starts to play.
In my case, I had to generate a poster for each of these 20 videos. This would have taken a long time, so I scripted it using FFmpeg!
Here is the script:
#!/usr/bin/env bash
# take in mp4, take screenshot at 5 seconds
# output same filename, but with jpg extension
for FILE in *.mp4
do
# save the filename but swap the extension
NEWFILE="${FILE%.mp4}.jpg"
ffmpeg -y -i $FILE -f mjpeg -vframes 1 -ss 5 $NEWFILE
done
If your videos are not mp4 format, just change the extension.
To use this script:
- save this script as
poster.sh
- put it in the folder with all your video files
- own the script with
chmod +x poster.sh
- run the script with
./poster.sh
You should see a bunch of text fly in your command line, and a couple of seconds later, the conversion should be done. You will see some nice little posters right beside your videos! And, they will all be nicely named too!
James Doyle
I'm a full-stack developer, co-organizer of PHP Vancouver meetup, and winner of a Canadian Developer 30 under 30 award. I'm a huge Open Source advocate and contributor to a lot of projects in my community. When I am not sitting at a computer, I'm trying to perfect some other skill.