Linux: Zeitraffer mit DSLR (Canon EOS 7D), gphoto2 und mencoder

26 November 2012 4 Kommentare Autor: Jürgen (jdo)

Timelapse Teaser Wolken 150x150Dass sich mit Linux, beziehungsweise gphoto2 meine Canon EOS 7D ausgezeichnet fernsteuern lässt, hatte ich in diesem Beitrag über gphoto2 schon genauer beschrieben. Da sich mit gphoto2 auch die Anzahl der aufzunehmenden Bilder und die Wartezeit zwischen den Bildern bestimmen lässt, kann man damit natürlich auch wunderbar Zeitrafferaufnahmen (Timelapse) erschaffen.

Einige Gedanken und eine Warnung vorneweg. Möchstest Du ein langes Intervall mit vielen Fotos haben, belastet das natürlich die Kamera. Auch hochwertige DSLRs haben mechanische Teile. Manche Kameras halten 100.000 Aufnahmen, die anderen 300.000. Also bitte im Hinterkopf behalten, dass mal eben 1500 Bilder auf die Kamera schießen die Lebenszeit verkürzt (Mechanik, Sensor und und und). Wenn man nur damit experimentieren möchte, sind weniger Aufnahmen mit kurzen Videos sicher nicht unschlau.

Ein Stativ ist ebenfalls nicht blöd, wenn nicht sogar notwendig. Zumindest sollte es irgendetwas sein, das die Kamera stabil hält. Bei Zeitraffer will man schließlich zeigen, wie sich ein bestimmter Ort über einen gewissen Zeitraum verändert – halt eben auf einen kürzeren Zeitraum komprimiert.

Man braucht für das Szenario keinen Supercomputer. Um die Aufnahmen zu machen hat mein mittlerweile etwas angestaubtes Samsung NC10 locker ausgereicht. Ich habe meine Kamera für das Experiment auf das kleinste Format gestellt (small jpg). Somit ist ein Foto ungefähr 1,5 MByte groß – oder auch 2592×1728 Pixel – das reicht locker. Auch wenn es ein Sonnenuntergang war, wollte ich die Lichtverhältnisse gleich lassen – mir ging es hier um die Bewegung der Wolken. Deswegen habe ich die Kamera auf Blendenpriorität gestellt – also die Blende soll gleich bleiben, die Kamera entscheidet die Verschlusszeit. Das erste Bild hat die 7D mit 1/320 Sekunden und das letzt mit 1/50 aufgenommen. Insgesamt habe ich in zirka 17 Minuten 51 Bilder geschossen – oder alle 20 Sekunden eine Aufnahme.

Zeitraffer: erstes Bild(1/320 Sekunden, F8)

Zeitraffer: erstes Bild (1/320 Sekunden, F8)

Zeitraffer: letztes Bild(1/50 Sekunden, F8)

Zeitraffer: letztes Bild (1/50 Sekunden, F8)

Weiterhin kann man sich überlegen, ob man den Autofokus deaktiviert. Man fokussiert manuell und alle Bilder haben den selben Fokus. Mit Blende F8 ist bei einem Weitwinkelobjektiv sowieso sehr viel im Fokus und deswegen habe ich mich dafür entschlossen. Natürlich ist Blende, Verschlusszeit und so weiter Geschmacksache.

Nun muss man die Bilder nur noch so benennen, damit man sicherstellen kann, dass sie in der richtigen Reihenfolge sind. Der von mir verwendete Befehl war:

gphoto2 -I 20 -F 51 --capture-image-and-download --filename "%Y%m%d%H%M%S.jpg"

Die Option -I 20 gibt das Intervall der Wartezeiten an und -F 51 kümmert sich um 51 Aufnahmen. --capture-image-and-download sichert die Aufnahme auf dem Rechner in dem Verzeichnis, in dem der Befehl ausgeführt wurde und löscht das Bild gleichzeitig von der Kamera.

Sind die Aufnahmen abgeschlossen, feuert man mencoder ab und erstellt das Video. Vielleicht sollte man die Original-Bilder irgendwo hinsichern, falls etwas schief geht. Dann hat man im Notfall mehr als einen Versuch.

mencoder "mf://*.jpg" -mf fps=12:type=jpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vbitrate=7000 -vf scale=1280:720 -oac copy -o timelapse.mp4

Da mir das Video mit 25 Bildern pro Sekunde etwas sehr kurz geworden wäre, habe ich mich für 12 fps entschieden. Das Video ist ein klein wenig ruckeliger, aber für das Experiment ist das OK. Bei scale kann man sich überlegen, welche Auflösung das Video haben soll. Full HD wäre zum Beispiel 1920:1080 und HD 1280:720.

Als letztes kann man sich noch überlegen, den Bildern einen Zeitstempel zu verpassen. Ich habe im Internet zwar ein ganz nützliches Script gefunden, das hat mir aber nicht getaugt. Man hätte jedes Bild einzeln konvertieren müssen. Da ich ein Backup meiner Bilder haben, lasse ich mittels convert (ImageMagick) einfach den Zeitstempel aus den EXIF-Informationen in die Bilder schreiben lassen und die Bilder auch überschrieben. Mein Script schaut folgendermaßen aus. Die Zeile mit convert ist deswegen separiert, weil das im Script eine einzige Zeile ist.

#!/bin/bash

DIR=/home/bitblokes/Pictures/timelapse
for FILE in $DIR/*.jpg
do
text=`identify -format “%[EXIF:DateTime]” $FILE`
width=`identify -format %w $1`

convert $FILE -gravity southeast -pointsize 40 -stroke black -strokewidth 4 -annotate 0 “${text}” -stroke white -strokewidth 1 -fill white -annotate 0 “${text}” $FILE

done

Lässt man nun den mencoder-Befehl noch einmal laufen, bekommt das Video einen netten Zeitstempel.

Zeitraffer mit Zeitstempel

Zeitraffer mit Zeitstempel

Ich spiele gerne mit meiner Kamera und Linux. Mit einfachen Hausmitteln lassen sich recht simpel tolle Zeitraffer-Videos erstellen. gphoto2 und mencoder sollten sich in den Repositories der meisten Distributionen befinden. Das funktioniert natürlich auch mit jeder anderen Kamera, die gphoto2 unterstützt.



Du kannst gerne Deinen Senf zu diesem Beitrag geben: Hier geht es zu den Kommentaren


Schreiben macht durstig! Eine kleine Erfrischung kann daher nie schaden. Wem dieser freie Artikel gefallen hat, der darf mir gerne einen frisch gezapften Hopfen-Tee ausgeben (Paypal - der Spenden-Knopf
oder bitcoin - Adresse: 1NacVNwcLLePUVv8uSafu5Ykdwh8QyDfgK). Ich freue mich über jede noch so kleine Spende. Vielen Dank und Prost!
 Alle Kommentare als Feed abonnieren

4 Kommentare zu “Linux: Zeitraffer mit DSLR (Canon EOS 7D), gphoto2 und mencoder”

  1. Henrikx sagt:

    Guter Artikel, klasse Video.
    Zwei Anmerkungen, da bei einigen Distribution mplayer2 vorinstalliert ist, und mencoder nicht vorhanden,funktioniert die Konvertierung natürlich auch mit ffmpeg.

    Anstatt Container AVI besser MKV, oder MP4.

    • jdo sagt:

      Wie man die Bilder zusammenschließt ist im Endeffekt egal, hast Recht. Einige raten sogar zu Wine und VirtualDub. Ich wollte einfach nur zeigen, dass eine Kamera, eine Linux-Installation und die Kommandozeile vollkommen ausreicht. Man muss weder rumklicken, noch sonst irgendwas. Zwei Befehle und Zeitraffer ist geritzt :)

      Ja stimmt - das avi ist so eine Altlast, die sich in meinem Gehirn festgesetzt hat :)

  2. Michael sagt:

    Sicherlich kennst Du auch schon "slowmoVideo"
    http://slowmovideo.granjow.net/index.html
    um ein Video zu entruckeln. Je nach optischem Fluss kann da extrem viel heraus geholt werden.
    Christoph hat da auch einen kurzen Artikel.
    http://linuxundich.de/de/software/timelapse-video-mit-slowmovideo-entruckeln/

    • jdo sagt:

      Nö, kannte ich noch nicht ... gleich mal ausprobieren ... ich bekomme das Video schon ruckelfreier hin, aber dann wären es mit meinen 50 Bildern nur 2 Sekunden gewesen :)

Antworten