Inhaltsverzeichnis

Film aus Bildern (Reolink) erstellen

Voraussetzungen

Grundlage sind Bilder, die mit einer Webcam von Reolink gemacht wurden. Hiermit wurde über eine längere Zeit ein Zeitraffer erstellt, in dem jede Minute ein Bild abgespeichert wurde. Da kommen schätzungsweise, 1440 Bilder am Tag zusammen. ​

Script

mit dem Folgenden Script habe ich ein Video aus den ganzen Bildern erstellt. Ausgeführt wird das Script im gleichen Verzeichnis, wo auch die Bilder drin sind.

#!/bin/bash
​
# 2024 by Maik Schmalle
​
for i in *.jpg; do
  echo $i > tmp.txt
  bild=$(cut -d '_' -f2-3 tmp.txt).jpg
  film=$(cut -d '_' -f2 tmp.txt).avi
  echo $new
  mv "$i" "$bild"
done
​
ls -1 | grep -v bilder.txt > bilder.txt
mencoder -nosound -noskip -oac copy -ovc copy -o $film -mf fps=20 'mf://@bilder.txt'
​
rm *.txt

Beschreibung

Original Dateiname von der Reolink Kamera: TimeLapse00_DST20240624_170203_84000_365a2e72_54DEE.jpg

Es wird das Verzeichnis durchgegangen und die Schleife auf alle *.jpg Dateien angewandt.
Der Code hierfür ist for i in *.jpg; do

Die Bilder werden umbenannt dazu wird der zweite und dritte Teil aus den Dateinamen benutzt (DST20240624_170203.jpg, das Datum und die Urzeit). Der String wird in die Variable „bild“ gespeichert.
Der Code hierfür ist bild=$(cut -d '_' -f2-3 tmp.txt).jpg

Für das Video wird nur der zweite Teil benutzt (DST20240624.avi, das Datum). Der String wird in die Variable „film“ gespeichert.
Der Code hierfür ist film=$(cut -d '_' -f2 tmp.txt).avi

Jetzt wird eine Liste der Dateien in dem Verzeichnis sortiert nach Datum und Uhrzeit in eine TXT Datei geschrieben. Diese liegt im selben Verzeichnis wie die Bilder.
Der Code hierfür ist ls -1 | grep -v bilder.txt > bilder.txt

Jetzt wird aus der Liste mit Dateinamen ein Video erstellt. Da es nur Bilder sind, ist ein Schalter -nosound aktiviert. Außerdem wird mit -o der Dateinamen angegeben, bei mir wird die Variable $film genommen, die wir vorher erstellt haben. Dann ist noch wichtig wie viele Frames per second das Video haben soll, hier in dem Beispiel sind es 20 fps. Zu guter letzt wird noch die Liste der Bilder angegeben bei uns bilder.txt.
Der Code hierfür ist mencoder -nosound -noskip -oac copy -ovc copy -o $film -mf fps=20 'mf:@bilder.txt

Zum Schluss wird noch ein wenig aufgeräumt, indem die *.txt Dateien gelöscht werden, die nicht mehr gebraucht werden.
Der Code hierfür ist
rm *.txt''