Here’s a block diagram of the system. It’s from the printed handout (PDF in the files below) I’ll have for people at Maker Faire.
The Beaglebone runs this project easily, using about 30% CPU while the video is streaming and GIF files are triggered. I used the efficient video4linux API, via the v4l2 library (which is installed by default on Beaglebone’s Angstrom Linux distribution).
I also used libudev to detect the attach and remove events for the webcam and the USB virtual serial devices from the Teensy boards. Each board implements a very simple identification query/response, so when udev detects each serial device, it sends the query and parses the response. This completely avoids hard-coding any device names. The complete source code is available below, for anyone who wants to use this technique.