Zeitraffer aus Einzelbildern unter Ubuntu

An dieser Stelle ein paar Scripte und Bash-Befehle, um aus Serienbildern unter Ubuntu einen Zeitraffer-Film zu erstellen.

In diesem Beispiel wurden mit Hilfe einer GoPro-Kamera Serienbilder im Abstand von 5 Sekunden gemacht. Dieser Abstand eignet sich ganz gut, um zum Beispiel vorbeiziehende Wolken zu zeigen.

Am Einfachsten ist die Erstellung eines Zeitraffer-Filmes, wenn die Dateinamen der Fotos bei 1 beginnend durchnumeriert sind. Dies ist bei den Fotos von der Gopro nicht der Fall:


ls *.JPG
G0011367.JPG
G0011368.JPG
G0011369.JPG
...
G0082086.JPG

Die Fotos müssen also zunächst umbenannt werden. Dazu wird ein neuer Unterordner „renamed“ angelegt. Anschließend wird mit folgendem Script eine Kopie der Bilder mit den gewünschten Dateinamen angelegt. Die Originalfotos bleiben dabei unverändert.

rename.sh

#!/bin/bash
a=1
for i in `ls -rt *.JPG`; do
new=$(printf "%04d.jpg" ${a})
cp ${i} ./renamed/${new}
let a=a+1
done

Dieses Script nimmt alle .JPG-Dateien im aktuellen Verzeichnis, sortiert sie nach Uhrzeit und kopiert sie mit einer fortlaufenden Nummer mit führenden Nullen ins Verzeichnis „./renamed/“

Als nächstes müssen die Fotos verkleinert und beschnitten werden, damit sie in der gewünschten Videoauflösung vorliegen. In diesem Beispiel soll ein Full-HD-Video mit einer Auflösung von 1920×1080 Pixeln entstehen. Zum Bearbeiten der Fotos kommt das Kommandozeilentool „convert“ aus dem Imagemagick-Paket zum Einsatz. Zunächst werden die Fotos auf eine Breite von 1920 gebracht und dann der gewünschte Bildausschnitt erzeugt:


cd renamed #ins Verzeichnis wechseln, wo die umbenannten Bilder liegen
for i in `ls *.jpg`; do convert ${i} -resize "1920x1920^" -gravity center -crop 1920x1080+0+0 +repage fullhd_${i}; done

Nachdem dieser Befehl durchgelaufen ist (kann je nach Anzahl Fotos eine Weile dauern), liegen nun alle Fotos unter dem Dateinamen fullhd_0001.jpg usw in der richtigen Auflösung vor.

Nun muss nur noch aus den Einzelbildern ein Video zusammengebaut werden. Das übernimmt das Programm ffmpeg:


ffmpeg -f image2 -i fullhd_%04d.jpg -r 25 -vb 4096k timelapse.mpg

Und so sieht das Ergebnis aus:

Der Film rafft ca eine Stunde auf ungefähr 25 Sekunden zusammen. Leider hat erst ein Schaf das Stativ umgeschmissen und dann fing es auch noch an zu regnen. Nächstes mal ist dann hoffentlich besseres Wetter.

2 Gedanken zu „Zeitraffer aus Einzelbildern unter Ubuntu

  1. failipp

    Hi!

    Ich weiß, dass dieser Beitrag nun schon über zwei Jahre alt ist, aber ich bin durch Zufall über ihn gestolpert. Natürlich habe ich mich wahnsinnig gefreut so schnell eine Anleitung zum Thema zu finden und das ganze auch gleich ausprobiert. Allerdings war ich enttäuscht, als mir die Bash die Rückmeldung „Syntaxfehler beim Wort convert“ gab. Nach ein wenig herumprobieren habe ich den Befehl doch noch zum laufen gebracht. Ich habe einfach ein „do“ nach dem ersten „;“ hinzugefügt und siehe da, alles funktioniert einwandfrei. Es wäre schön zu sehen, wenn dies noch zum Artikel hinzugefügt werden würde.

    Mfg failipp

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.