Mit ein paar Hausmitteln kann sich jeder so eine Webcam-Zeitraffer-Aufnahme zu Hause selbst bauen. Zutatenliste:

· Einen ausgemusterten Mac Mini: Der hier ist ein Mac Mini der ersten Generation, quasi der Urgroßvater aller Mac Minis, aus dem Jahre 2005. Das Gerät ist aufgrund der schmalbrüstigen CPU und Gesamtleistung heute kaum noch ernsthaft einsetzbar, als Heimserver jedoch, ist er unschlagbar!

· Eine Portion handelsübliches Linux: Der Mac Mini da oben läuft mit Ubuntu Linux statt mit Apples Mac OS. Mehr dazu, beschrieb ich damals hier.

· Eine stinknormale Webcam: Bei mir ist es eine Logitech Pro 9000, die einfach an einen USB Port des Mac Minis gesteckt wird. Linux erkennt das Gerät völlig Automagisch und macht es über /dev/video0 im System verfügbar.
Den Rest erledigen die folgenden fertige Programme für mich:
- fswebcam (apt-get install fswebcam)
- crontab (um das ganze Zeitlich zu steuern)
- mencoder (der Encoder von mplayer, apt-get install mencoder)
- Standard GNU binaries wie date und cp
Das folgende Shell-Script schiesst mir ein aktuelles Bild der Webcam und bewegt das letzte alte Bild ins Archiv:
#!/bin/sh
DATE=`date +”%s-%Y-%m-%d_%H-%M”`
## move old picture to archive
/bin/cp /var/www/cam/capture-latest.jpg /var/www/cam/archive/$DATE-capture.jpg
/usr/bin/fswebcam -q -F 10 –skip 9 -d /dev/video0 -r 1280×720 –jpeg -1 /var/www/cam/capture-latest.jpg
Als Dateiname generiere ich über “date” ein leicht sortierbares Ergebnis: Die einzelnen Dateien haben das Format <unix-timestamp>-Jahr-Monat-Tag_Stunde_Minute-capture.jpg. Da die Unix Zeit ein einfacher Zähler der Sekunden seit 1970 ist, kann man so seine Fotos effektiv sortieren oder weiterverarbeiten. Zum Spaß lasse ich die Dateien in das Verzeichnis des Webservers ablegen – so kann ich von überall schauen ob zu Hause die Welt noch vorhanden oder schon untergegangen ist. Ein zweites Script rotiert mir die Dateien dann geordnet nach Jahr/Monat/Tag in die jeweiligen Verzeichnisse.
fswebcam ist ein nützliches Programm, was mir das Bild von der Webcam abholt. Als Optionen benutze ich -q (für Quiet) -F 10 (schiesse 10 Frames/Bilder) –skip 9 (werfe die ersten 9 davon weg) -d /dev/video0 (vom Gerät /dev/video0, der Webcam) -r 1280×720 (die Auflösung des Bildes) –jpeg -1 (Kompressionsfaktor des Bildes, -1 automagie).
10 Bilder deshalb, weil die Kamera für Autofokus und Anpassung an die Lichtverhältnisse etwas Zeit braucht, vor allem bei den wechselnden Lichtverhältnissen. Deshalb fliegen auch die ersten 9 Bilder direkt wieder weg. fswebcam könnte man auch ohne Crontab dauerhaft laufen lassen, allerdings fand ich persönlich diesen Weg für meinen Zweck besser.
Zu guter Letzt müssen aus den vielen Bildern nur noch bewegte Bilder werden. Dazu bediene ich mich des Tools mencoder:
mencoder “mf://~/cam/archive/*.jpg” -mf fps=10 -o ~/webcam-current.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
Mencoder wird hier angewiesen als Quelle alle JPEG Bilder im Heimatverzeichnis zu benutzen und daraus ein MPEG4 Video im AVI Container mit 10 Frames/Sekunde zu erstellen; ein anderes Beispiel findet man in der manpage.
Das Endergebnis habe ich dann bei Vimeo hochgeladen – natürlich könnte man auch Youtube benutzen oder es selbst hosten. Letzteres ist aber vor allem durch die üblichen Unterschiede zwischen Browsern und den unterstützten Formaten so eine Sache – Vimeo ist der einfachere Weg. Viel Spaß beim Nachmachen!
Zwischenrufe / Quark