Skip to content

Create image slideshow

Following will take all *.jpg images from current folder and create mp4 image slideshow. Images can have different sizes, ffmpeg will rescale or pad them.

Terminal window
ffmpeg -framerate 1/3 \
-pattern_type glob -i '*.jpg' \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1" \
-c:v libx264 -crf 14 -r 25 -pix_fmt yuv422p \
output.mp4
  • -framerate 1/3 image will be change each 3 sec
  • -pattern_type glob -i '*.jpg' will use all *.jpg images from current folder
  • -vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1" rescale or pad image to 1280x720
  • -c:v libx264 use H.264 codec
  • -crf 14 CFR (Constant Rate Factor) is betweemn 0–51, where 0 is lossless, 23 is the default, and 51 is worst quality possible.
  • -r 25 set frame rate.
  • -pix_fmt pixel output format

With background music:

Terminal window
ffmpeg -framerate 1/3 \
-pattern_type glob -i '*.jpg' \
-i audiofile.mp3 \
-vf "scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1" \
-c:v libx264 -crf 14 -r 25 -pix_fmt yuv422p \
-shortest \
output.mp4
  • -shortest will take shorten source images or mp3 as length limit for video