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.
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
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
rm *.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