Creating Stop Motion Video

For fun today, Jesse constructed a stop motion scene with legos and a hand-drawn backdrop. Meanwhile, I wrote an animation process. I wrote it as two scripts: one to resize input from my camera, the other to actually animate the pictures.

My ImageMagick resize script is reasonably simple, and if you search for other animation techniques, you will see many scripts like this. To use all four cores on my processor, I fire off 5 resize jobs and then do a job wait for them to complete so that I do not bog my system down.

#!/bin/bash
set -x
set -e
# ----------------------------------------------------------------#
#  resize the input directory and put it in the output directory  #
#  and also re-names the files to simple numbered format          #
# ----------------------------------------------------------------#
i=0
j=1000
find 0-input/ -type f -iname "*.jpg" -printf "%f\n" \
| sort \
| while read f ; do
   g="1-resized/r-$j.png"
   echo "convert 0-input/$f -geometry 728x480! -normalize $g "
   convert "0-input/$f" -geometry 728x480! -normalize "$g" &
   i=$[ $i + 1 ]
   j=$[ $j + 1 ]
   if [ $i -eq 4 ]; then
      # wait a bit
      for job in `jobs -p`; do
         echo -n "...$job"
         wait $job 
      done
      i=0
   fi
   echo "!"
done
echo "done"

My animation script is not all that different from other animation scripts you can search for on google, either. However, mine does not loop, does no fades, and plays very slowly. The first ‘-r’ switch specifies how long the input frames should last, so in this case, about 750ms (1.25 frames/sec). The output frame rate is the second ‘-r’ switch.

#!/bin/bash
# -f : output format
# -r : frame rate
# -i : input file pattern
now=`date +%Y-%m-%d_%H%M`
ffmpeg  -r 1.25 -i "1-resized/r-1%03d.png" -r 24 "2-animated/animation-$now.mov"

I have a post of it on my G+.

Why Bikes Make Smart People Say Dumb Things — Medium

This so telling about our society:

We’ve been conditioned since infancy to ignore most of these fatalities, along with the behaviors that cause them. If you’re a typical American, your first experience of speeding was while strapped into a car seat, and you rode past half a dozen fatal accident scenes before speaking your first complete sentence.

https://medium.com/p/9316abbd5735

Give childhood back to children: if we want our offspring to have happy, productive and moral lives, we must allow more time for play, not less – Comment – Voices – The Independent

I think many teachers and parents would agree.

“…a common Chinese term used to refer to the products of their schools is gaofen dineng, which essentially means good at tests but bad at everything else.”

via Give childhood back to children: if we want our offspring to have happy, productive and moral lives, we must allow more time for play, not less – Comment – Voices – The Independent.

Pipes: Everyday Plumbing with Shell Script

A pipe redirects output from one program or file to the input another program or file. This makes scripting Unix commands possible and incredibly powerful. But like anything powerful, it takes time to develop the skill to get there. It is so useful, it is sometimes hard to express to people only used to looking at their files as “folder icons” what you’re doing. All you can really say is, “programming.” Thus, one can learn a very useful skill on a recovered computer without much capability or Internet availability.

Your task: go read up on shell scripting.

cat remove.names \
| while read F ; do
   fgrep -q "$F" keep.names \
   || (fgrep ",$F" remove.txt | head -1) \
   >> take_back.txt ;
done

Then come back and tell me what I’m doing here :-)