I want to create a video from still images. My images are:

  • 1.jpg
  • 2.jpg
  • 3.jpg
  • 4.jpg
  • 5.jpg
  • 6.jpg
  • 7.jpg
  • 8.jpg
  • 9.jpg

Each of them I want to show for a specific duration, between 1-10 seconds:

  • 1.jpg: 2 seconds
  • 2.jpg: 6 seconds
  • 3.jpg: 10 seconds
  • 4.jpg: 1 second


Between the images I want to gradually fade out the old image and fade in the new image.

I have a feeling this can all be done with convert and ffmpeg. However, the problem is with having the different duration between each image. This page helps a lot, but I can't figure out how to time things between images. Any ideas?


1 Answer 1


If all of the .jpg files combined can be faithfully rendered in 256 colours out of 16mln colour colour space, then you can convert them into frames of an animated gif, which allows you to specify delays per frame in 100th of seconds.

You can then use convert (from the imagemagick package) to do the conversion:

convert -delay 200 1.jpg -delay 600 2.jpg -delay 1000 3.jpg -delay 100 4.jpg \
    .....  result.gif

(replace the dots with additional "-delay N.jpg" pairs).

  • Thanks Anthon but I need the quality and colors that GIF can't offer!
    – user
    Commented Oct 7, 2014 at 13:50
  • It was worth a try, if there is little constraint on the size you can try MJPEG, APNG or else a real video format (MPEG, AVI). The Animated stills formats usually have some display time control, video just has N frames per second
    – Anthon
    Commented Oct 7, 2014 at 15:36

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .