Vor einiger Zeit bat mich ein Bekannter, den mehrwöchigen Umbau seines neuen Ladenlokals in Form einer Zeitrafferaufnahme zu dokumentieren. Da ich auf der staubigen Baustelle nur ungern meine hochwertige Systemkamera zurücklassen wollte, lag es nahe, für diese Aufgabe auf den kostengünstigen Raspberry Pi zurückzugreifen, dessen Verlust sich eher verschmerzen ließe.
Zeitrafferaufnahmen bestehen aus einer Vielzahl von Einzelbildern, die über einen längeren Zeitraum in einem vorher festgelegten, regelmäßigen Abstand aufgenommen werden. Für normale Filmaufnahmen, die das Geschehen in Echtzeit und ruckelfrei darstellen, benötigt man bei Einhaltung der in Deutschland üblichen PAL-Norm 25 Einzelbilder für 1 Sekunde Film.
Da sich die avisierte Langzeitdokumentation aber über mehrere Wochen erstrecken sollte, habe ich mich für 1 Bild/Minute entschieden. In einer Stunde werden so 60 Bilder geschossen. Bei einer späteren Bildfrequenz von 25 Bilder/Sekunde wird eine in Echtzeit verlaufene Stunde ergo in 2,4 Filmsekunden abgebildet. Ein ganzer Tag dauert dann 57,6 Filmsekunden, eine Woche 403,2 Filmsekunden, und das macht bei maximal 4 Wochen Umbauzeit (eher weniger) dann insgesamt 1612,8 Filmsekunden, sprich: gute 27 Minuten. Das klingt erst mal recht ermüdend, und das würde es sicher auch sein.
Die endgültige Aufnahmezeit wird aber, wie später gezeigt, bei Einrichtung des Cronjobs auf 12 Stunden pro Tag beschränkt, da die Handwerker voraussichtlich ja nur zwischen 08:00 und 20:00 im Einsatz sein werden. Das Gesamtmaterial schrumpft also auf 13,5 Minuten zusammen. Schneidet man die langweiligen Passagen (Frühstück, Mittagspause, Besorgungen, Handlungen außerhalb des Kamerabereichs) später heraus, dann bleibt erfahrungsgemäß höchstens ein Viertel im endgültigen Film.
Vier Wochen in gut 3 Minuten als Endlosschleife auf einem großen Display sind bei der Eröffnung durchaus kurzweilig, und ein ausreichender „Headroom“ beim Rohmaterial hat noch nie geschadet.
Also, frisch ans Werk:
Ich setze hier einmal voraus, dass das Kamera-Modul korrekt an der CSI-Schnittstelle angeschlossen wurde (Blaue Markierung muss – bei dem verwendeten RasPi 2 – zur Netzwerk-Buchse zeigen) und mittels
aktiviert wurde. Falls im Konfigurationsmenü die Zeile „camera Enable/Disable camera addon support“ fehlt, sollte das System mit
und anschließendem
zunächst auf den aktuellen Stand gebracht werden.
Ob die Einrichtung der Kamera korrekt ist, lässt sich schnell über den Befehl „raspistill“ feststellen, der in dieser Form ein JPEG-Bild im Home-Order des Users (hier: pi) erstellt:
Da sich der Raspberry Pi auf einer Baustelle befinden wird und deshalb nicht von einer durchgängigen Stromversorgung auszugehen ist (vor allem, wenn Elektriker involviert sind), sollte die Aufnahme nach Stromausfällen selbständig wieder beginnen.
Ferner sollte jedes generierte Bild einen eindeutigen Namen erhalten, da bei simpler, fortschreitender Nummerierung vorherige Bilder überschrieben werden könnten.
Es muss also ein Shell-Skript erstellt werden, das über einen Cronjob nach jedem Booten des Raspberry Pi automatisch ausgeführt wird.
Zuerst wird jedoch ein eigener Ordner (hier ‚zeitraffer‘) im Home-Verzeichnis angelegt, in dem die Einzelbilder gesammelt werden:
Anschließend wird mit Starten des Editors nano (Ja, vi oder besser vim ist cooler, aber nur für Geeks!) das Shell-Script für das Aufnehmen und Speichern der Einzelbilder erstellt:
Der Code kann hier über den Befehl „Copy“ der Menüzeile des Codeblocks in die Zwischenablage kopiert und in nano eingefügt werden.
1 2 3 4 5 6 7 8 9 10 11 12 |
#!/bin/bash #Zeitstempel fuer die Datei-Benamung generieren timestamp=$(date +%Y-%m-%d-%H-%M) echo $timestamp #Dateipfad zuweisen filename=/home/pi/zeitraffer/$timestamp.jpg #Bild aufnehmen echo $filename raspistill -o $filename -w 1920 -h 1024 -n |
Die angegebenen Befehlsoptionen -w 1920 und -h 1024 sind genau genommen überflüssig. Sie dienen der Einstellung der Bildauflösung (-w für die Bildbreite, -h für die Bildhöhe). Der Befehl ‚raspistill‘ wählt ohne Angabe der Auflösung nämlich automatisch die höchstmögliche. Ich habe diese Einstellung dennoch implementiert, um zu verdeutlichen, wie im Bedarfsfall auch geringere Auflösungen eingestellt werden können.
Abgeschlossen wird das Erstellen des Shell-Scripts mit der Tastenkombination Strg+X zum Verlassen und Speichen, gefolgt von der Bestätigung der Sicherheitsabfrage mit Y bzw. J (je nach eingestellter Systemsprache) und dem Bestätigen des Dateinamens mit Enter.
Damit das erstellte Script ohne Fehlermeldung abgearbeitet werden kann, wird es mit folgendem Befehl als ausführbar deklariert:
Bleibt nur noch das Einrichten des Cronjobs. Die zuständige Datei lässt sich mit folgendem Befehl bearbeiten:
In die sich daraufhin öffnende Datei wird hinter der letzten Zeile folgender Code eingefügt:
1 |
*/1 7-20 * * * /home/pi/zeitraffer.sh |
Gespeichert wird wieder mit Strg+X, Y (oder J) und Enter.
Ab jetzt reicht das Booten des Raspberry Pi aus, um die Aufnahme automatisch zu starten bzw. fortzusetzen. Die gesammelten Einzelbilder können dann später mit einer Videobearbeitungssoftware zum endgültigen Film zusammengesetzt werden.