Some quotes of myself from four years ago:
“Cheap” should mean here that you don’t need to spend money on extra hardware like a remote timer or on extra software like Windoze [...]
My hope is that I can use gphoto2 with an Android smartphone.
Somehow this is still a Linux-post, as Android simply is the most popular Linux distribution to date. Btw, PC and smartphone don’t count as dedicated extra hardware. But you might need to purchase an app and a USB adapter:
Meanwhile I use the awesome DSLR Controller on my Android smartphone in USB host-mode to create time-lapse picture sequences on my aging Canon EOS 40D—a thing that wouldn’t work with a diePhone, I guess. This app can do a lot more, of course. Up to now, you have to rely on USB. However, as Wi-Fi enabled DSLRs are appearing, there is some hope to get rid of that cable and adapter one day; Canon’s own EOS Remote app doesn’t support time-lapse shooting yet. [Update: To equip your camera with Wi-Fi, you could hack an Android TV stick!]
The most elegant solution would of course be located within the camera itself. Canon is still sleeping in this regard, but at least there’s the third-party Magic Lantern firmware add-on for some newer models, also sporting an intervalometer. My 40D is not (yet, but I guess won’t ever be) supported.
You should still set the camera to a resolution at or slightly above the HD 1080p resolution, which in my case is 1936×1288. You should fix the aperture and ISO values, and probably also the exposure time. [Update: In addition, fix the white balance. Also, don’t forget to cover the viewfinder with the eyepiece cover on your strap, as otherwise you might get different exposures that result in flickering!]
After getting the images to your Linux machine, you need to crop the pictures from 3:2 to 16:9 (in my case 1936×1089) or crop a 1920×1080 patch directly. You can do this with a simple script using ImageMagick:
#!/bin/bash
[ ! -z “$1” ] && v=$1 || v=0
[ ! -z “$2” ] && h=$2 || h=0
for img in *JPG; do
num=$(echo $img | tr -d ’[:alpha:]_.’)
convert $img -crop 1920x1080+$h+$v img_${num}c.jpg
done
(GNU Parallel didn’t work for me.) You can then issue
$ mencoder ’mf://*jpg’ \
-nosound \
-ovc x264 \
-x264encopts nocabac:level_idc=41:bframes=0:bitrate=9500:\
global_header:threads=auto:pass=1 \
-mf type=jpg:fps=24 \
-vf dsize=1920:1080:2 \
-of lavf -lavfopts format=mp4 \
-o timelapse-f24-1080.mp4
to render an HD video into a format that’s also recognized by your smartphone.
Finally, you could use OpenShot to edit your videos and add background music. (You could of course compose that music yourself using FOSS as well...)