{"id":1282,"date":"2021-12-20T13:53:28","date_gmt":"2021-12-20T12:53:28","guid":{"rendered":"http:\/\/archiv.etscheid.biz\/?p=1282"},"modified":"2023-01-03T15:37:05","modified_gmt":"2023-01-03T14:37:05","slug":"ip-kamera-stream-kontinuierlich-speichern-mit-vlc","status":"publish","type":"post","link":"https:\/\/etscheid.biz\/blog\/2021\/12\/20\/ip-kamera-stream-kontinuierlich-speichern-mit-vlc\/","title":{"rendered":"IP-Kamera Stream kontinuierlich speichern mit VLC"},"content":{"rendered":"\n<p>Meine D-Link Netzwerk Kameras k\u00f6nnen zwar ein Video speichern und verschicken, das allerdings immer nur kurz und mit ein paar Sekunden abstand dazwischen. Eine dauerhafte Speicherung des Streams ist \u00fcber die Kamera selber nicht m\u00f6glich. Es geht nur indem ich den Netzwerkstream der Kamera von einem anderen Ger\u00e4t \u00f6ffne und abspeichere.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/etscheid.biz\/blog\/wp-content\/uploads\/2021\/09\/security-camera-monitoring-4430918.jpg\" alt=\"Security Camera Monitoring  - fmunzert \/ Pixabay\" width=\"320\" height=\"213\"\/><figcaption class=\"wp-element-caption\"><a href=\"https:\/\/pixabay.com\/users\/fmunzert\">fmunzert<\/a> \/ Pixabay<\/figcaption><\/figure>\n<\/div>\n\n\n<!--more-->\n\n\n\n<p>Mein Ziel war es, mittels Batch Datei, die Aufzeichnung zu starten, den Stream zu speichern und die erzeugten Dateien mit Datum und Uhrzeit versehen.<\/p>\n\n\n\n<p>Fangen wir also mit dem Kamera Stream an, wird ben\u00f6tigen den RTSP Stream, wie in einem vergangenen Eintrag beschrieben: <a href=\"https:\/\/etscheid.biz\/blog\/2020\/11\/29\/shortcut-fuer-videostreams-mit-ios-kurzbefehle\/\" data-type=\"post\" data-id=\"1111\" target=\"_blank\" rel=\"noreferrer noopener\">Shortcut f\u00fcr Videostreams mit iOS Kurzbefehle<\/a><\/p>\n\n\n\n<p>\u00d6ffnet man nun die Eingabeaufforderung (CMD) und startet folgenden Befehl, so \u00f6ffnet sich VLC mit dem Videobild.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">start \/wait vlc.exe rtsp:\/\/admin:Passwort@IP-Adresse:554\/play1.sdp<\/mark><\/code><\/pre>\n\n\n\n<p>Jetzt muss dieser Stream nur noch gespeichert werden, sobald er abgespielt wird. Dazu erg\u00e4nzt man den Befehl um folgendes, muss nat\u00fcrlich den Speicherort entsprechend anpassen.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">--sout=#duplicate{dst=file{mux=mp4,dst=<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">c:\\cam\\Video.mp4<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">,no-overwrite},dst=display} --play-and-exit<\/mark><\/code><\/pre>\n\n\n\n<p>Die gesamte Zeile sieht dann so aus. (Bitte Passwort und IP-Adresse, sowie den Speicherordner ab\u00e4ndern)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">start \/wait vlc.exe rtsp:\/\/admin:<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Passwort<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">@<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">IP-Adresse<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">:554\/play1.sdp --sout=#duplicate{dst=file{mux=mp4,dst=<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">c:\\cam\\<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">Video.mp4,no-overwrite},dst=display} --play-and-exit<\/mark><\/code><\/pre>\n\n\n\n<p>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.<\/p>\n\n\n\n<p>Als n\u00e4chstes m\u00f6chte ich, das die Datei das aktuelle Datum enth\u00e4lt und die Startuhrzeit. Dies erh\u00e4lt man mit folgenden Code in einer Batch Datei:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">@echo off\n\nset hour=%time:~0,2%\nif \"%hour:~0,1%\" == \" \" set hour=0%hour:~1,1%\n\nset min=%time:~3,2%\nif \"%min:~0,1%\" == \" \" set min=0%min:~1,1%\n\nset secs=%time:~6,2%\nif \"%secs:~0,1%\" == \" \" set secs=0%secs:~1,1%\n\n\nset year=%date:~-4%\n\n\nset Tag=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%hour%-%min%-%secs%<\/mark><\/code><\/pre>\n\n\n\n<p>Der Dateiname muss jetzt im oben genannten Befehl auf %Tag% ge\u00e4ndert werden. Also C:\\cam\\<strong>%Tag%<\/strong>.mp4.<br>Dann wird die Datei entsprechend benannt.<\/p>\n\n\n\n<p>Unsere Batch Datei (z.B. VLC-Stream.bat) enth\u00e4lt jetzt die Parameter f\u00fcr Datum und Uhrzeit, gefolgt von dem Link zum Starten von VLC mit dem Stream. Und jedes mal, wenn ihr die Batch Datei ausf\u00fchrt, \u00f6ffnet sich VLC, zeigt den Stream an und Speichert eine neue Datei im Ordner.<\/p>\n\n\n\n<p>Kommen wir nun zu den Feinheiten: <br>Wenn der Kamera Stream abreist, dann beendet sich VLC automatisch (das macht der Parameter  &#8211;play-and-exit). Wenn man also dann den Stream direkt wieder starten m\u00f6chte, dann f\u00fcgt 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\u00dfen des CMD Fensters beenden kann. Die Bat Datei sollte jetzt so aussehen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">@echo off\n\nset hour=%time:~0,2%\nif \"%hour:~0,1%\" == \" \" set hour=0%hour:~1,1%\n\nset min=%time:~3,2%\nif \"%min:~0,1%\" == \" \" set min=0%min:~1,1%\n\nset secs=%time:~6,2%\nif \"%secs:~0,1%\" == \" \" set secs=0%secs:~1,1%\n\n\nset year=%date:~-4%\n\n\nset Tag=%date:~-4%-%date:~-7,2%-%date:~-10,2%-%hour%-%min%-%secs%\n\n\n\nstart \/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\n\nC:\\Users\\Andreas\\Desktop\\vlc-stream.bat<\/mark><\/code><\/pre>\n\n\n\n<p>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\u00fcndlich ausf\u00fchre. Das einzige was in diese Bat Datei rein muss ist folgendes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">taskkill \/IM \"vlc.exe\"<\/mark><\/code><\/pre>\n\n\n\n<p>M\u00f6chte man mehrere Streams von mehreren Kameras aufnehmen, so muss man in den Optionen von VLC ausschalten, das nur eine Instanz erlaubt ist. Dann \u00f6ffnen sich mehrere VLC Fenster.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>PS: Wenn man nur aufzeichnen und kein Videobild im VLC sehen m\u00f6chte, dann muss man anstelle von:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-cyan-bluish-gray-color\">--sout=#duplicate{dst=file{mux=mp4,dst=c:\\cam\\%Tag%.mp4,no-overwrite},dst=display}<\/mark><\/code><\/pre>\n\n\n\n<p>folgenden code verwenden:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>--sout=#file{dst=c:\\cam\\%Tag%.mp4,no-overwrite}<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Quellen: <br>Den Code f\u00fcr das Datum und Uhrzeit habe ich hier \u00fcbernommen bzw. abgeleitet: <a rel=\"noreferrer noopener\" href=\"https:\/\/znil.net\/index.php\/Windows:Batch_\/_DOS-Box:_aktuelles_Datum_und_Uhrzeit_f%C3%BCr_Datei-_oder_Verzeichnisnamen_verwenden\" target=\"_blank\">https:\/\/znil.net\/index.php\/Windows:Batch_\/_DOS-Box:_aktuelles_Datum_und_Uhrzeit_f%C3%BCr_Datei-_oder_Verzeichnisnamen_verwenden<\/a><\/p>\n\n\n\n<p>Die VLC Parameter habe ich hier \u00fcbernommen bzw. abgeleitet:<br><a rel=\"noreferrer noopener\" href=\"https:\/\/www.vlc-forum.de\/thread\/1867-f30-kommandozeile-aufruf-und-parameter%C3%BCbergabe\/\" target=\"_blank\">https:\/\/www.vlc-forum.de\/thread\/1867-f30-kommandozeile-aufruf-und-parameter%C3%BCbergabe\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Meine D-Link Netzwerk Kameras k\u00f6nnen zwar ein Video speichern und verschicken, das allerdings immer nur kurz und mit ein paar Sekunden abstand dazwischen. Eine dauerhafte Speicherung des Streams ist \u00fcber die Kamera selber nicht m\u00f6glich. Es geht nur indem ich den Netzwerkstream der Kamera von einem anderen Ger\u00e4t \u00f6ffne und abspeichere.<\/p>\n","protected":false},"author":2,"featured_media":1323,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[247,222,223,248],"class_list":["post-1282","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-smart-home","tag-rtsp","tag-stream","tag-video","tag-vlc"],"_links":{"self":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts\/1282","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/comments?post=1282"}],"version-history":[{"count":2,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts\/1282\/revisions"}],"predecessor-version":[{"id":1738,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/posts\/1282\/revisions\/1738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/media\/1323"}],"wp:attachment":[{"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/media?parent=1282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/categories?post=1282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/etscheid.biz\/blog\/wp-json\/wp\/v2\/tags?post=1282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}