Aktuell haben wir eine “kleine Baustelle” an unserem Haus. Hierbei finden diverse Umbauten deren Fortschritt ich gerne mit einem Zeitraffervideo festhalten möchte. Hierfür habe ich bei meinem Nachbarn eine spezielle Kamera zur Erstellung von Zeitraffervideos aufgestellt. Diese Kamera erstellt alle 10 Minuten ein Foto und fasst diese zu einem täglichen Video zusammen. Nun habe ich viele einzelne Tagesvideos und es stellte sich die Frage wie ich mehrere Videos zu einem Zusammenfassen kann. Mit dem Tool FFMPEG ist das kein Problem und mit einem kleinen Script erledigt.
Grundausstattung – Zeitrafferkamera von Brinno
Angefangen hat alles mit der Suche nach der geeigneten Kameralösung. Wichtig war für mich, dass die Kamera möglichst wartungsfrei funktioniert und über einen langen Zeitraum Aufnahmen durchführt. Immerhin möchte ich nicht ständig bei meinem Nachbarn stehen um Batterien zu wechseln. Nach dem Lesen diverser Test- und Erfahrungsberichte habe ich mich dann für ein Modell der Firma Brinno entschieden. Ich habe die Brinno TLC200 Pro erworben, heute ist das Nachfolgermodell die Brinno TLC300 Pro eher das Modell der Wahl.
Die Kamera selbst ist sehr kompakt und steht in meinem Fall auf einem kleinen Stativ bei meinem Nachbarn auf der Fensterbank. Über eine integrierte SD Karte (in meinem Fall 32 GB) und den passenden Longlife Batterien nimmt die Kamera über einen Monat lang (zumindest in meinem Test) jeden Tag zwischen 8 und 18 Uhr alle 10 Minuten ein Foto auf. Die Aufnahmequalität habe ich, natürlich, auf die höchste Qualitätsstufe gestellt. Dazu habe ich festgelegt, dass die Kamera 1 Bild pro Sekunde für das Video verwendet. Dadurch ist das Video zwar recht lang, kann aber später immer noch schneller gemacht werden 🙂
Den monatlichen Besuch bei meinem Nachbarn (vielen Dank nochmal dafür) nutze ich, um die Daten der Speicherkarte zu sichern und neue Batterien einzusetzen.
Problem: Einzelvideos kombinieren
Wie bereits beschrieben habe ich nun, je Wochentag, ein einzelnes Tagesvideo. Diese liegen alle in einem Ordner, die Dateinamen sind logisch aufgebaut und werden “einfach” hochgezählt. Das heisst der erste Tag hat die Nummer 00000, der nächste 00001 usw. Nach einigen Tagen haben wir also viele Einzelvideos was erstmal schön aber nicht Sinn und Zweck der Sache ist. Um nun alle Einzelvideos zu einem zusammen schneiden zu können habe ich mich dem Tool FFMPEG bedient.
Als erstes muss FFMPEG heruntergeladen und entpackt werden. Als nächstes kopiere ich die Datei ‘ffmpeg.exe’ in ein Verzeichnis in welches ich alle Einzelvideos lege. Um nun alle Videos zusammen fassen zu können benötige ich nun nur noch ein kleines Script welches hier mit dem Namen ‘combine.bat’ dargestellt ist.
Im folgenden zuerst einmal das Script:
@echo off
setlocal enabledelayedexpansion
:: Ordner für beschleunigte Videos erstellen
set "FAST_FOLDER=fast_videos"
if not exist "%FAST_FOLDER%" mkdir "%FAST_FOLDER%"
:: Suche alle AVI-Dateien im aktuellen Ordner
echo Suche alle .avi-Dateien im aktuellen Verzeichnis...
for /f "delims=" %%A in ('dir /b /o:n *.avi') do (
set "VIDEO=%%A"
echo Verarbeitung von: !VIDEO!
:: Überprüfen, ob die Datei existiert
if exist "!VIDEO!" (
set "BASENAME=!VIDEO:.avi=!"
echo Ausgabe-Dateiname: %FAST_FOLDER%\!BASENAME!_fast.avi
ffmpeg -i "!VIDEO!" -vf "setpts=PTS/5" -af "atempo=2.0,atempo=2.5" -c:v libx264 -preset slow -crf 18 "%FAST_FOLDER%\!BASENAME!_fast.avi"
) else (
echo Fehler: Datei "!VIDEO!" wurde nicht gefunden. Überspringe...
)
)
:: Schritt 2: Erstelle eine neue Liste der beschleunigten Videos
set "FAST_FILE_LIST=fast_file_list.txt"
echo Erstelle Liste der beschleunigten Videos...
if exist "%FAST_FILE_LIST%" del "%FAST_FILE_LIST%"
for %%B in ("%FAST_FOLDER%\*_fast.avi") do (
echo file '%%~fB' >> "%FAST_FILE_LIST%"
)
:: Überprüfen, ob die Liste existiert
if not exist "%FAST_FILE_LIST%" (
echo Fehler: Liste der beschleunigten Videos wurde nicht erstellt.
pause
exit /b 1
)
:: Schritt 3: Kombiniere die beschleunigten Videos
echo Kombiniere Videos...
ffmpeg -f concat -safe 0 -i "%FAST_FILE_LIST%" -c copy combined.avi
:: Überprüfen, ob die Kombination erfolgreich war
if exist "combined.avi" (
echo Kombiniertes Video wurde erfolgreich erstellt: combined.avi
) else (
echo Fehler beim Erstellen des kombinierten Videos.
)
pause
Das Script selbst führt folgende Schritte durch:
- Schritt 1: Erstellung eines neuen Ordners ‘fast_videos’ in welchem Videos zwischengespeichert werden
- Schritt 2: jede .avi Datei im aktuellen Ordner wird 5-fach beschleunigt und in den Zwischenordner gelegt
- Schritt 3: aus den beschleunigten Dateien im Zwischenordner wird ein neues Video mit dem Namen ‘combined.avi’ erzeugt
mehrere Videos zu einem Zusammenfassen – einfach und wiederholbar
Ich hoffe, dass das kleine Script dem ein oder anderen hilft. In meinem Fall wird das Script mehr oder weniger regelmäßig eingesetzt um die Einzelvideos zu kombinieren. So richtig spannend wird es erst nächstes Jahr wenn die Videos eines langen Zeitraumes zur Verfügung stehen. Sobald die Baustelle abgeschlossen ist werde ich das Endergebnis natürlich gerne veröffentlichen.
Das erste kleine Video der ersten Woche ist hier schonmal zu sehen 🙂
Zugegeben, in der ersten Woche ist überschaubar viel passiert und das Video relativ unspektakulär. Da der Umbau jedoch recht umfangreich ist wird das mit Sicherheit noch interessant werden 🙂