I have a bunch of pictures taken without an intervalometer that I'd like to assemble into a time lapse video. Is there a method of using the pictures' randomly spaced timestamps to space the frames correctly in time? Preferably using linux.

  • Interesting question. I'm not sure file time-stamps are sufficiently precise for this though. – Itai Dec 23 '15 at 18:46
  • 1
    I'm talking about a shot every few hours, so the time-stamp should be accurate enough. – tkw954 Dec 23 '15 at 18:57
  • Interesting idea. What is the range of variation in time that you're talking about? – junkyardsparkle Dec 23 '15 at 20:50
  • 1
    You would need to add duplicate frames to fill in gaps to balance out the time, maybe fading the two images together to ease transition. Are you asking for a program that can do this or another technique automatically, or would you be willing to manually composite the frames into a video? – wedstrom Dec 23 '15 at 21:24
  • 3
    I'm voting to close this question as off-topic because this question is about creating a video. – dpollitt Dec 30 '15 at 14:54

That sounds relatively easy to do "programmatically" if you wish to just have an equal time space per frame and are happy for an image to repeat until it fills its time allotment. You could do this with most programming languages without treating the images as other than files.

I assume that file date & time represent EXIF data. If not this can be set using eg jhead. Then:
1. Decide what basic time period you want between frames. If you set this to < or << the minimum actual the adjustment will be smoother.
2. Make a date-time ordered file list with file-name and date-time in it.
3. Use a program to calculate time between adjacent frames and thus number of replications required.
4. Copy current frame to duplicate frames using same name followed by eg a numerically ascending count.
5. QED

eg if you have the following files
DSC09876 1100
DSC09877 1200
DSC09878 1320
DSC09879 1410

Minimum time between here is 1410-1320 = 50 minutes. Set time step at say 10 minutes
Produce files
DSC09876a 1100
DSC09876b 1110
DSC09876c 1120
DSC09876d 1130
DSC09876e 1140
DSC09876f 1150

DSC09877'a 1200
DSC09877`b 1210
DSC09877'c 1220
DSC09877'd 1230
DSC09877'e 1240
DSC09877'f 1250
DSC09877'g 1300
DSC09877'h 1310

DSC09878a 1320
DSC09878b 1320
.... DSC09878a 1350
DSC09878a 1400

DSC09879 1410

All files which are named the same except for the last digit (a, b, c, ... are identical.


This sounds like a job for AVISynth (or the Linux alternative AVXSynth).

AVISynth is a frame server that accepts scripted input files. It would certainly be possible to write a script in AVISynth that could do this.

Is AVISynth easy to learn? Definitely not, but if you are comfortable with programming it is a very powerful way of piecing together videos from a variety of still images formats and video feeds.


You could use Blender in video clip edit mode.

  • Optionally, rename the pictures to indicate second+frame values (this makes later work easier)
  • Import all images into the nonlinear editor (one button push actually),
  • Place images to the appropriate frame.
  • Render Animation (match the framerate you used in calculating the second+frame values for the filenames).

The entire process can be scripted.

You can also use any nonlinear video editor for the same action, but most of them does not have an API for scripting.

Not the answer you're looking for? Browse other questions tagged or ask your own question.