How to make a Stop Motion or Time-lapse video with webcam?

Capturing a zillion images.

The first step is capturing images. Let's imagine you want to take a photo once every 10 seconds and save that into a directory sitting on your desktop

mkdir ~/Desktop/cap
cd ~/Desktop/cap

We use streamer to do the capture so let's install it:

sudo apt-get install streamer

And now we want to capture

streamer -o 0000.jpeg -s 300x200 -j 100 -t 2000 -r 1

-t is the number of frames we want to capture. -r is frames per second. So this should grab one frame every second. If you compress that down into a 30fps video, one minute of capture becomes 2 seconds of video. You'll want to tune this appropriately depending on how much output video you want.

That line will give you 2000 images, it'll take half an hour to record and, at 30fps, will generate just over 1 minute of video.

Putting it all together

I'm going to use ffmpeg. There are many different ways of putting it together including mencoder but I just prefer ffmpeg's outlook on life. After installing it (sudo apt-get install ffmpeg) just wang out this:

ffmpeg -r 30 -i %04d.jpeg -s hd480 -vcodec libx264 -vpre hq time-lapse.mp4

The quality settings there aren't anything like that of my webcam so you might want to play around with the options a lot more to get a better encode, but that should generate you a nice 30fps video, compressed up in x264.

You might want to play around with the framerate (-r) but I wouldn't go below 15fps.


To capture every X amount of seconds from a webcam use motion.

Install motion

sudo apt-get install motion or sudo aptitude install motion

Configure motion for every X amount of seconds

sudo nano /etc/motion/motion.conf

Change the variables minimum_frame_time and snapshot_interval to the same amount of seconds you wish to take the picture with the webcam.

10 Minutes = 600 Seconds
20 Minutes = 1200 Seconds
30 Minutes = 1800 Seconds
1 Hour = 3600 Seconds
2 Hours = 7200 Seconds and so on...

run motion with sudo motion stop it with CTRL+C

NOTE - Configure motion.conf to save the files in another directory than the default /tmp. For example your home folder. Since going to /tmp needs more privileges. You will also find many useful options in the motion.conf for many other things you might like.


gTimelapse (Download Link)

enter image description here

An application for capturing images to generate timelapse videos, built on gPhoto2 and wxWidgets libraries.

Compile instructions

Download the source from the sourceforge website

in a terminal type the following:

cd Downloads 
gunzip gtimelapse-0.1.tar.gz
tar -xvf gtimelapse-0.1.tar
cd gtimelapse
sudo apt-get install build-essential libgphoto2-2-dev libwxbase2.8-dev libwxgtk2.8-dev gphoto2
./configure
make
sudo make install

To run the application type

gtimelapse &

n.b. 1

gphoto2 --list-cameras | more

n.b. 2

see this blog for further useful info

lists all compatible devices that the application supports

n.b. 3

I've read the gphoto2 does not support webcams - I'll leave this answer visible anyway just in-case anyone wants to try this answer with a decent digital camera instead of a webcam.