Hands-free Linux method, with transcode's stabilizer filter. A crude wrapper function, (Bourne shell, bash, etc.):
# Usage: shakeless foo.avi
# eventually outputs stable_foo.avi
unset slow
# export slow="nice -n 19 ionice -c3 " # uncomment if it the PC bogs down.
shakeless() { $slow transcode -J stabilize --mplayer_probe -i "$1" 2> /dev/null ; \
$slow transcode -J transform -i "$1" -y raw -o stable_"$1" ; \
rm "$1".trf ; }
To use:
shakeless foo.avi
...which can take hours. To display the time elapsed when it's finished, replace the previous line with:
time shakeless foo.avi
Once it's over, there should be a 'stable_foo.avi' file -- play that.
How is this not worse than blender? No complex learning curve, no mousing, menuing, etc. Maybe less hassle, even for a 12 year old user.
What it does, in two passes; first pass:
transcode -J stabilize --mplayer_probe -i foo.avi
...slow, outputs many status messages; after which there's a new big foo.avi.tr data file -- it's not video, it's intermediate data used for the second step:
transcode -J transform --mplayer_probe -i foo.avi -y raw -o stable_foo.avi
After which stable_foo.avi should be a less shaky version of foo.avi
Method above adapted from D. Isenmann's Deshaking videos with Linux.