I've always enjoyed timelapse photography. I can't give you any particular reason, it probably comes from the same place as my fascination with tilt-shift photography too. Timelapse has the benefit that you don't need to buy a very very expensive lens to do it though, and every now and then I've tried it out. This post is about how to do it with a T2i and how to make a video out of the resulting photographs.
The first one I made was several years ago while living in the Alps in Austria, when I made an igloo with a friend. At the time I had just bought myself a gopro, which has dedicated timelapse photo mode built in - I put it on the window ledge while we went out to build the igloo then later composited everything together.
Travelling around south east Asia as I am right now means lots of beautiful sunrises and sunsets. I really really wanted to try to capture one of them - more sunrise than sunset because I'm quite good at getting up early and either in bed early or drinking around the time the sunset happens. I'll make it one day but in the meantime it's mostly sunrises at 5am.
The challenge here is that I don't have the gopro, but what I do have is my venerable Canon T21 (also called 550d outside North America, not sure why). This does not by default have a timelapse mode, unless you count standing still and pressing the shutter button every minute, which requires way more patience and hand steadiness than I have. So I started looking for alternative solutions.
To start, I installed custom firmware onto the camera, called Magic Lantern. After that, you have to compose the photos into a video which I did using ffmpeg and ImageMagick. Here's how I did all that, and it's worth bearing in mind that for the first part, you can completely brick your camera if things go wrong. And the second part requires a bit of command line work, but it's not too hard. I did this on a Mac but it shouldn't be too different on Linux or Windows.
Step one is to enable the 550d to actually shoot in a mode which will take photos based on a preset interval, which is not available on the stock firmware which comes with the camera. At least, this is true of the one I have which I bought around 8 years ago in 2009.
Magic Lantern is an open-source firmware written for Canon cameras by enthusiasts and hobbyists who wanted to get more from their hardware. It works on most Canon models, as far as I know, an you can see the complete list on their downloads page. It's quite easy to install - you can follow the instructions on their site easily enough - but be aware that it is possible that it will brick your camera. Definitely read through the documentation before you start so you don't end up doing something bad.
Assuming you've got it installed, to shoot timelase you want to use the intervalometer mode. Press the delete button in shooting mode to get to the menu, then scroll through until you find the intervalometer settings. It has options for how to start shooting, such as half a shutter press, then it'll take photos every interval depending on what you choose. Depending on what camera mode you choose, it'll basically take a new photo each time with those settings including autofocusing and choosing shutter speed and appeture if you select something like Program mode.
I highly recommend having a tripod for this!
Joining it together
By this point, you'll have hundreds or even thousands of image files on your memory card. I'm assuming you're shooting in a way which generates JPEG files, if you're only shooting RAW you'll need to export them to some kind of regular image format. PNG and so on will work too, I imagine.
Now you need to get ffmpeg and ImageMagick installed. These are command line utilities so you'll have to be at least a little familiar with the Terminal on OSX or whatever your farourite terminal is on Linux. For OSX you can install ffmpeg via homebrew, and it'll be in most Linux package managers. You can also download and install it directly. You also will need ImageMagick, also available via direct download but also homebrew and package managers.
There are three parts to this stage: firstly resizing the photos, secondly creating extra merged images between each photo, then finaly combining them all together. The first two are not completely necessary but you might find them useful to know how to do. I also create a new directory and copy only the images for the timelapse into them - this can be useful if like me you end up with lots of other photos taken at the same time, because the following commands will simply assume you want all photos joined together. So create a new direcory only for the photos which will go into your timelapse video.
So assuming that you have ffmpeg installed and all your relevant photos in a single place, the first step is to resize the photos. This isn't completely necessary but since full HD video is 1920x1080, and my modest 18 megapixel camera creates photos that are 5184x3456, it seems like overkill and by resizing the resulting video will be smaller and therefore easier to upload somewhere. Assuming your files are all called something.JPG, this command will do it:
mogrify -resize 1920x1080 *.JPG
That is assuming you want full HD, of course you can change those dimensions to anything you want and the JPG could be PNG, TIFF, whatever. This will resize the photo files in place so be aware that it does not create copies it changes the original.
The second optional step is to create interval frames between the pictures that you took. This is not necessary but can help as it creates morphed images between the ones you took in order to make the transitions smoother when creating the video. Depending on what you are shooting this may be useful or useless, it's up to you. The command to do it is very simple:
convert *.JPG -delay 10 -morph 10 %05d.jpg
This will create a series of images with names starting at
At this point, you have a whole bunch of images ready to be joined together, whether you use the originals or did some resizing and merging. The next step is to join them together, which is where ffmpeg comes in.
If you didn't do the merging step, your images will still be something like IMG_1234.JPG, so you can join them together with this command:
ffmpeg -start_number 1234 -r 10 -i IMG_%4d.JPG output.mp4
The '-start_number 1234' is important. Replace 1234 with whatever the first number is in your series of photos, or ffmpeg will complain at you and fail to work. So if your images are IMG_5000.JPG to IMG_5560.JPG, replace that 1234 with 5000.
If you did do the step which creates the interval frames of morphed images, you'll need to change that command slightly to this:
ffmpeg -r 10 -i %5d.jpg output.mp4
Note that in both cases that'll create a video called output.mp4, you may wish to change that!
The ones I made
I've been making a few of these while travelling around South East Asia for the last few months, mostly from firstly visiting Angkor Wat and being amazed at just how many tourists were there. I wanted to make something to show the volume of people entering the Angkor park and that's where this whole idea came from. Here's the resulting video of five minutes watching all the traffic entering:
Now I had it working and I had this bug in me wanting to film lots of things these ways. They don't always work out - just like all photography it's a combination of timing, luck and skill except now you need that hundreds of times in a row. The other one that I made that I really like was on the rooftop of a building in Manila during sunrise:
There are some others but they didn't work out for various reasons. I tried making another sunrise one but it turned out to be cloudy. I also forgot to charge the battery enough when I tried making a sunset, and I also just got bored while seeing what would happen to make one during a poker game. However I'm very glad that I now have the camera and the software that can do it so watch this space for the next ones!
Here's the igloo I filmed with a GoPro by the way as mentioned earlier: