Skip to content

Instantly share code, notes, and snippets.

@m0zgen
Forked from pklaus/mkvideo.sh
Created September 30, 2016 04:55
Show Gist options
  • Save m0zgen/5196f3f8657c837026c5075a8e94edb3 to your computer and use it in GitHub Desktop.
Save m0zgen/5196f3f8657c837026c5075a8e94edb3 to your computer and use it in GitHub Desktop.
A Bash script to create a video from series of JPEG images. Ideal to create videos from timed sequences shot with a tripod. It uses mogrify (from imagemagick) to resize the images to FullHD and it then uses ffmpeg to create a video from the sequence of images.
#!/bin/bash
# This is a script to create a video from series of JPEG images
# Call it in a folder full of JPEGs that you want to turn into a video.
# Written on 2013-01-08 by Philipp Klaus <philipp.l.klaus →AT→ web.de>.
# Check <https://gist.github.com/4572552> for newer versions.
# Resources
# * http://www.itforeveryone.co.uk/image-to-video.html
# * http://spielwiese.la-evento.com/hokuspokus/index.html
# * http://ffmpeg.org/trac/ffmpeg/wiki/Create%20a%20video%20slideshow%20from%20images
# * http://wiki.ubuntuusers.de/FFmpeg
set -x
FRAMERATE=4
RESOLUTION=1920x1080
# Rename the images into a sequence
# http://www.ralree.com/2008/08/06/renaming-files-sequentially-with-bash/
EII=1
# If sorting according to the file date, copy them using cp -a ../*.JPG ./
for i in $(ls -tr *.JPG); do
ls $i
NEWNAME=IMG_`printf "%05d" $EII`.JPG
#echo Renaming $i to $NEWNAME
mv $i $NEWNAME
EII=`expr $EII + 1`
done
# Resize the images (replaces the files)
mogrify -resize $RESOLUTION *.JPG
# Now create the video using ffmpeg
cat *.JPG | ffmpeg -f image2pipe -r $FRAMERATE -vcodec mjpeg -i - -vcodec libx264 out_$FRAMERATE.mp4
#ffmpeg -f image2 -r $RATE -i IMG_%05d.JPG movie_$RATE.mp4
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment