IP-Kamera Stream kontinuierlich speichern mit VLC

IP-Kamera Stream kontinuierlich speichern mit VLC

Meine D-Link Netzwerk Kameras können zwar ein Video speichern und verschicken, das allerdings immer nur kurz und mit ein paar Sekunden abstand dazwischen. Eine dauerhafte Speicherung des Streams ist über die Kamera selber nicht möglich. Es geht nur indem ich den Netzwerkstream der Kamera von einem anderen Gerät öffne und abspeichere.

Security Camera Monitoring  - fmunzert / Pixabay
fmunzert / Pixabay

Mein Ziel war es, mittels Batch Datei, die Aufzeichnung zu starten, den Stream zu speichern und die erzeugten Dateien mit Datum und Uhrzeit versehen.

Fangen wir also mit dem Kamera Stream an, wird benötigen den RTSP Stream, wie in einem vergangenen Eintrag beschrieben: Shortcut für Videostreams mit iOS Kurzbefehle

Öffnet man nun die Eingabeaufforderung (CMD) und startet folgenden Befehl, so öffnet sich VLC mit dem Videobild.

start /wait vlc.exe rtsp://admin:Passwort@IP-Adresse:554/play1.sdp

Jetzt muss dieser Stream nur noch gespeichert werden, sobald er abgespielt wird. Dazu ergänzt man den Befehl um folgendes, muss natürlich den Speicherort entsprechend anpassen.

--sout=#duplicate{dst=file{mux=mp4,dst=c:\cam\Video.mp4,no-overwrite},dst=display} --play-and-exit

Die gesamte Zeile sieht dann so aus. (Bitte Passwort und IP-Adresse, sowie den Speicherordner abändern)

start /wait vlc.exe rtsp://admin:Passwort@IP-Adresse:554/play1.sdp --sout=#duplicate{dst=file{mux=mp4,dst=c:\cam\Video.mp4,no-overwrite},dst=display} --play-and-exit

Wenn mit diesem Befehl VLC startet, das Videobild zu sehen ist und auch im Ordner eine Video Datei angelgt wird, dann funktioniert es wie es soll.

Als nächstes möchte ich, das die Datei das aktuelle Datum enthält und die Startuhrzeit. Dies erhält man mit folgenden Code in einer Batch Datei:

@echo off

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%

set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%

set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%


set year=%date:~-4%


set Tag=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%hour%-%min%-%secs%

Der Dateiname muss jetzt im oben genannten Befehl auf %Tag% geändert werden. Also C:\cam\%Tag%.mp4.
Dann wird die Datei entsprechend benannt.

Unsere Batch Datei (z.B. VLC-Stream.bat) enthält jetzt die Parameter für Datum und Uhrzeit, gefolgt von dem Link zum Starten von VLC mit dem Stream. Und jedes mal, wenn ihr die Batch Datei ausführt, öffnet sich VLC, zeigt den Stream an und Speichert eine neue Datei im Ordner.

Kommen wir nun zu den Feinheiten:
Wenn der Kamera Stream abreist, dann beendet sich VLC automatisch (das macht der Parameter –play-and-exit). Wenn man also dann den Stream direkt wieder starten möchte, dann fügt man den Link zu Bat Datei in die selbe Bat-Datei ein. Dann startet VLC direkt erneut. Man hat jetzt eine Schleife gebaut, die man nur durch schließen des CMD Fensters beenden kann. Die Bat Datei sollte jetzt so aussehen:

@echo off

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%

set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%

set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%


set year=%date:~-4%


set Tag=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%hour%-%min%-%secs%



start /wait vlc.exe rtsp://admin:Password@IP-Adresse:554/play1.sdp --sout=#duplicate{dst=file{mux=mp4,dst=c:\cam\%Tag%.mp4,no-overwrite},dst=display} --play-and-exit

C:\Users\Andreas\Desktop\vlc-stream.bat

Damit VLC jetzt keine riesigen Dateien erzeugt beende ich VLC 1x pro Stunde. So wird immer eine MP4 Datei erzeugt, die 1 Std lang ist. Dazu erstelle ich eine weitere Bat Datei, die ich dann in den Windows Aufgabenplaner aufnehmen und stündlich ausführe. Das einzige was in diese Bat Datei rein muss ist folgendes:

taskkill /IM "vlc.exe"

Möchte man mehrere Streams von mehreren Kameras aufnehmen, so muss man in den Optionen von VLC ausschalten, das nur eine Instanz erlaubt ist. Dann öffnen sich mehrere VLC Fenster.


PS: Wenn man nur aufzeichnen und kein Videobild im VLC sehen möchte, dann muss man anstelle von:

--sout=#duplicate{dst=file{mux=mp4,dst=c:\cam\%Tag%.mp4,no-overwrite},dst=display}

folgenden code verwenden:

--sout=#file{dst=c:\cam\%Tag%.mp4,no-overwrite}

Quellen:
Den Code für das Datum und Uhrzeit habe ich hier übernommen bzw. abgeleitet: https://znil.net/index.php/Windows:Batch_/_DOS-Box:_aktuelles_Datum_und_Uhrzeit_f%C3%BCr_Datei-_oder_Verzeichnisnamen_verwenden

Die VLC Parameter habe ich hier übernommen bzw. abgeleitet:
https://www.vlc-forum.de/thread/1867-f30-kommandozeile-aufruf-und-parameter%C3%BCbergabe/

Like
Like Love Haha Wow Sad Angry
21

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.