Photography: “time lapse” con gPhoto2

Published by TheJoe on

Estimated reading time: 4 minutes


This article was published more than a year ago, there may have been developments.
Please take this into account.

Today I raised the issue of “time lapse”, a particular photographic technique that through the sequence of shots allows the creation of small animations. To get an idea of ​​what the time lapse, I refer you to spectacular video easily available on youtube, or rather those dedicated of this page.

For the good time lapse is necessary to automate the process of shooting, in practice things are not handled personal skill, the better the final result.

What you need for a traditional time lapse:

  • a tripod for the camera (or a fixed support, in order not to move),
  • a system that allows me to shoot without touching the camera (this is. remote control),
  • a good deal of attention / precision to take at regular intervals,
  • free time (at least an hour for a short video),
  • a lot of desire.

While for a time lapse automated serves much less “steals”:

  • a tripod for the camera (or a fixed support),
  • a cable to connect the camera to your computer,
  • “gPhoto2” and (eventually) “cron”,
  • ffmpeg to encode the shots in a video.

In the last tutorial we discussed how “gPhoto2” let us take pictures remotely through the simple USB connection of the camera to pc. In the past I wondered what could serve to take pictures remotely, the mirror of the SLR is easily audible and in case of video surveillance would alert thieves (you probably just steal the camera), and here is the practice appilcazione, or one of the possible: the time lapse.

In my experiment will use a Canon EOS 20D. I refer to the documentation gPhoto2 for a complete list of tested and compatible cameras.

First we position the camera to shoot something interesting: a scene that changes appearance with the slow passage of time. It can be, un tramonto, a busy street at night, a concert or event. The camera must be supported / secured to something solid, as a wall, un davanzale, or better yet a special stand so that it does not move.

We connect our cameras to the PC with the USB cable. At this point, the most recent distributions gPhoto2 will use to mount the camera directly and allow us to download photos via the file-default browser. To enable automatic clicks but it will be essential that the camera is not mounted, the easiest way is to open file manager in Gnome, click with the right button in the left column on the resource corresponding to the camera and select “Skinned” or “Remove drive safely”.

We check that gPhoto2 and camera are able to “communicate”. Run the command to take a picture “gphoto2 –capture-image”. If the shutter is tripped and the picture is saved in the internal memory can go to the next step.

As described in the previous article gPhoto2 is a software (as well as fun) full of features, you run the risk of “waste” much time to play with it. To make sure that the machine photo shots of continuous, set an interval in seconds, and determine the total number of shots the command is this: ” gphoto2 -I <#secondi> -F <#scatti> --capture-image --get-all-files“.

If there is any problem, and the camera is not recognized after a few shots, I refer you to section “Problems” at bottom of article. At this point we have a series of shots in ascending order, and we want to encode a video. The easiest thing is to use ffmpeg, a command line program for encoding video. Fortunately ffmpeg is automatic and aligns the images in ascending order, Unfortunately, if you find a “hole” between a file and the other does not skip to the next, but interrupts the coding (this is. missing photo 36 fra photography 35 e la 37). For this we have to rename all the files in ascending order so that there are no missing photos. The fastest way is still the shell. The command is this: ” ls *.jpg | nl -nrz -w5 | while read newname oldname; do mv "$oldname" $newname.jpg; done“. Create files with names 5 characters, in increasing numbers.

Look here:  Canon Club Italy asks for help

And now finally usiamo ffmpeg: ” ffmpeg -i '%05d.jpg' -target pal-dvd -y video.mpg“.

For more complex time lapse camera is made to slip on a track with every shot, so that in the final composition to have the impression of a scene shot “a mano”, dal life.


I do not have an objective, but from my personal experience it seems that gphoto2 does not like much of my camera. The problem does not always occur, it is the red LED of operation of camera. When you set an interval between two shots, the LED continues to flash intermittently. This means that gphoto2 is working, and waiting for the moment to take, but after a few shots I noticed that the camera is no longer recognized. I solved the problem with Cron, a small program command line already present in Linux distributions.

Cron is a simple program whose job is to run programs at certain intervals. The configuration file is “crontab”, to change it launch the command from the terminal “crontab-e” and my looks more or less like:

# Edit this file to introduce tasks to be run by cron.
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# For more information see the manual pages of crontab(5) and cron(8)
# m h  dom mon dow   command
* * * * * /home/joe/script/
* * * * * sleep 15; /home/joe/script/
* * * * * sleep 30; /home/joe/script/
* * * * * sleep 45; /home/joe/script/

The interesting lines are the last four. With this configuration, the last four lines launch the script “/home/joe/script/” every minute. The first retail precise, the second 15 seconds after, the third 30 seconds after the fourth and with a delay of 45 seconds. In this way snap photos spaced 15 seconds of each other (longer the shutter speed).

To get a general idea of ​​working with cron, rimando a Wikipedia.

Some reference

Practical Application


I keep this blog as a hobby by 2009. I am passionate about graphic, technology, software Open Source. Among my articles will be easy to find music, and some personal thoughts, but I prefer the direct line of the blog mainly to technology. For more information contact me.


Alexander · 22 June 2014 at 6:29 PM

Hello compliments for the tutorial!!! Let me ask you a suggestion: I would like to shoot for a yard that will last about a year, and I have no doubt about how much to take and over the img…..what do you recommend?

    Giovanni Mauri · 25 September 2014 at 3:26 PM

    Hello Alexander,
    I lost a little’ comments on the street in recent months. Sorry if I answer with this delay.
    For a time lapse of a yard I would rate the site first and what will be the result of the building finished (since the work will last a year). If you build a skyscraper in front of the house, for example, not only inquadrerei the perimeter of the initial work, but I would use a wide angle lens to resume in height.
    Regarding the shots, instead, I'd do one every time you connect a twilight at the shutter button (if they do not work at night). You have to start shooting just before workers enter the construction site and end when all are gone (if they work at night would click well at night).
    Show us your work when it is completed!

DaAsFlickred · 11 July 2012 at 7:11 PM

Great timelapse and nice tutorial joe!! 🙂

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.