Webcam Timelapse

2020-12-01

I got a model kit that I expected would take several hours to build, and I thought making a timelapse of the build would be fun. After looking at a few commercial apps that could create a timelapse, I thought it might be easier to write a small script that does it. Below is what I came up with.

#!/usr/bin/env bash

# trap ctrl-c and call ctrl_c()
trap ctrl_c INT

function ctrl_c() {
    ffmpeg -framerate 15 -pattern_type glob -i "*.jpeg" -s:v 1280x720 -c:v libx264 -crf 17 -pix_fmt yuv420p timelapse.mp4
    exit 0
}

for i in $(seq -f "%05g" 1 10000)
do
    echo "Frame ${i}"
    streamer -s 1280x720 -f jpeg -o image${i}.jpeg
    sleep 5
done

This script depends on ffmpeg to generate the actual video, but implements capture using streamer in a loop. The 10000 loop length can be adjusted, as can the sleep value of 5 according to taste. It traps Ctrl-C, so you don't have to worry about the 10000 being exactly right...it just needs to be long enough that it doesn't stop before you want it to.