Timelapse - Langzeitaufnahmen mit dem Raspberry Pi

Die Idee war spontan und bestand darin, mit dem Raspberry Pi und der Modulkamera eine Langzeitaufnahme von der Hansesail zu machen. Das Ziel bestand darin, 10 Tage die Aktivitäten aufzunehmen und diese dann in in einer Zeitrafferaufnahme abzuspielen.

Aufnahme

Für die Aufnahme nutze ich das mitgelieferte raspistill. Wenngleich die Parameter für die Timelapse-Funktion etwas gewöhnungsbedürftig scheinen, ist die Lösung recht greifbar. cd /timelapse raspistill -o %08d.jpg --timeout 864000000 --timelapse 60000 --rotation 90

Da beim Zeitraffer für gewöhnlich mehr als ein Foto erstellt und benötigt wird, nutzt man einen Platzhalter. Im Beispiel werden nun Bilder von "00000001.jpg" bis "99999999.jpg" möglich. Das Format mit einer fortlaufenden Nummer ist durchaus sinnvoll.

Die Zeitangaben sind alle in Millisekunden anzugeben. 60000 Millisekunden entspricht also einer Minute; minütlich wird in diesem Fall also ein Foto durch den Raspi geschossen und gespeichert. 10 Tage sind 1000 (Millisekunden) * 60 (Sekunden) * 60 (Minuten) * 24 (Stunden) * 10 (Tage), also 864000000 Millisekunden.

Theoretisch müssten die reservierten 8 Stellen der Ausgabedateien reichen. In 10 Tagen werden maximal 14400 Bilder erstellt; 5 Stellen hätten also vollkommen gereicht. - Sicher ist sicher! ;-)

Zu guter Letzt drehe ich das Bild um 90 Grad, da mein Raspberry einfach besser seitlich liegt. Das lässt sich natürlich auch im Nachgang machen, aber ein muss nicht.

Bilder Nachbearbeiten und Umwandeln

Ich nutze Image Magick, um die Nachbearbeitung der Bilder vorzunehmen. Der Befehl convert stellt vielfältige Möglichkeiten bereit, bei denen ich mich bediene.

Trotz der Rotation um 90 Grad ist das Bild nicht ganz gerade. Mittels des Parameters "-rotate" drehe ich es um weitere 8 Grad. Dadurch liegt das Bild nun schief und zeigt einen weißen und damit unschönen Rand. Ich färbe diesen mit "-background black" schwarz, was der Tatsache entgegen kommt, dass es fast aussieht, als hätte ich es so gewollt.

Die freien, schwarzen Stellen kann ich nutzen, um die entsprechenden Textzüge darauf zu legen, so dass es nun wirklich nach Absicht aussieht. Die Schriftart ist "Bookman-DemiItalic", 144 Punkte hoch und natürlich weiß. Ich positioniere die Schrift entsprechend meinen Wünschen...

Wenngleich convert** sehr wohl mit Wildcards/Platzhalter für die Massenverarbeitung von Bildern anbietet, nutze ich eine "for"-Konstruktion, damit ich besser unter Kontrolle habe, was, wann und wie passiert. cd /timelapse for i in *; do echo $i; convert -rotate 8 -background black -font Bookman-DemiItalic -pointsize 144 -fill white -draw "text 2000,200 'Hansesail'" -draw "text 100,2200 '2014'" $i /hansesail/$i; done

Video erstellen

Für das Zusammenfassen der Bilder zu einem Video lässt sich ffmpeg verwenden. Die Auflösung passe ich auf "1080p" mit einer Framerate von 50 Bildern pro Sekunde an. Die maximale Bitrate lege ich auf 5MB pro Sekunde fest, damit die Qualität angemessen bleibt. Das Seitenverhältnis von 4:3 entspricht dem ursprünglichen Bild; mittels convert hätte man bereits dort die Bildgröße entsprechend anpassen können.

cd /timelapse ffmpeg -i /hansesail/%08d.jpg -r 50 -b 5000k -s 1920x1080 -aspect 4:3 -f mp4 -vcodec mpeg4 Hansesail.mp4

Abspielen des Videos

Die leichteste Übung ist das Abspielen des Videos.

mplayer Hansesail.mp4