RTSP Camera Stream als HTTP Stream im eigenen Netzwerk

  • Hallo VLC-Team

    Ich habe mit meinen Kameras im Smart Home ein paar Probleme.


    Ich möchte Kameras am Haus installieren, welche via RTSP den Live-Stream wiedergeben und dann via EibPort (KNX Smart Home Server) in der Visu darstellen.

    Der Eibport kann jedoch "nur" HTTP (JPEG und MJPEG) wiedergeben/darstellen/abrufen.

    Folgendes Setup möchte ich umsetzen....
    -Raspberry Pi oder kleiner WIN PC auf dem VLC läuft.
    -3-4 Kameras die via RTSP Protokoll das Bild abrufbar machen.

    -Der VLC sollte mehrmals auf dem einen PC geöffnet werden und jeweils einen RTSP Stream abrufen und diesen als MJPEG im internen Netz (HTTP) zur Verfügung stellen.

    Auf die Kameras kann ich via VLC zugreifen und entsprechend den RTSP Stream abspielen.
    Nur... Ich bekomme keine anständige URL zusammen die ich in den Eibport/PC o.ä. eingeben kann/muss, so dass dann der HTTP Stream des VLC abgespielt wird..

    Hat irgendjemand eine Idee wie die URL lauten muss, dass ich auf den Stream zugreifen kann (sollte ja auch via Browser funktionieren)?

    im VLC (RTSP-Empfänger und HTTP-Sender) habe ich folgendes eingestellt...
    1. Netzwerkstream öffnen
    2. URL der Kamera eingegeben.
    3. Bei "Wiedergabe" auf den Reiter geklickt und "Stream" angeklickt
    4. Unter "neues Ziel" HTTP ausgewählt und auf hinzufügen geklickt.
    5. Einstellungen = Port: 80808 / Pfad /Stream1
    6. Profil "Video for MPEG4 720P (Transcodierung aktiveren)
    7. "Einstellungen" Verkapselung = MJPEG / Audio 0 deaktiviert.
    8. "alle Elementarstreams streamen" = aktiviert.
    Dann auf Stream geklickt.

    Beim 2. PC (HTTP-Empfänger) zum Testen im VLC die URL des Streaming-PC probiert. Jedoch bekomme ich da immer ne Fehlermeldung "Kann die URL nicht öffnen"
    Folgende URLs habe ich ausprobiert....
    http://192.168.2.xxx/Stream1
    und
    http://192.168.2.xxx:8080/Stream1

    Irgendwas passt mit Sicherheit bei den Einstellungen oder beim Stream nicht...
    VLC sagt nur: "generierter Ausgabestring" --> :sout=#transcode{vcodec=h264,scale=Automatisch,aco dec=none,scodec=none}:http{mux=mpjpeg,dst=:8080/stream1} :no-sout-all :sout-keep


    Über Tipps was zu beachten ist und evtl. eine Beispiel-URL würde ich mich wahnsinnig freuen (da ich gerade echt sehr genervt bin :-) ).

    Vielen vielen Dank

    Gruß Markus

  • Hallo Markus,


    würde zuerst andere Streaming-Beispiele mit dem VLC-Player ausprobieren.

    So kann man besser erkennen wie der VLC-Player als Streamingserver arbeitet.

    - VLC Player zeigt Camera Stream nur 10sec.

    - Video und Audio getrennt streamen


    Bezüglich der Kamera-Streams gibt es eine Datenbank die Hinweise der Streaming-Adressen liefert.

    So weiß man, welchen Stream man im VLC-Player abgreifen kann.

    - iP Kameras mit VLC anbinden/ abspielen


    Im Menü / Werkzeuge / Meldungen / die Ausführlichkeit auf die Stufe 2 einstellen und danach die Funktion im VLC-Player starten.

    Aus dem Fehlerprotokoll kann man möglicherweise Hinweise erkennen, wo der Fehler liegt.


    MfG

    Thomas

  • Hi und vielen Dank für die Antwort.


    Ich habe da leider noch ein paar Fragen bzw. Sachen nicht ganz verstanden.


    1. Alle Einstellungen habe ich ohne Skripts o.ä. vorgenommen. Ich starte einfach den VLC player und trage die Dinge dann in den Menupunkten ein.

    2.. Das Wiedergeben der Kamerabilder auf mehreren VLC Playern klappt wunderbar und das Bild wird auch flüssig dargestellt.

    3. Nun möchte ich nur den VLC so einstellen, dass er mir aus dem RTSP Stream den er empfängt/abruft, einen HTTP (MJPEG) Stream generiert und diesen wieder im lokalen Netz zu Verfügung stellt (so dass mein KNX Server darauf zugreifen kann).


    Anhand deiner Verlinkungen bin ich leider nicht wirklich schlauer geworden, was ich für Einstellungen vornehmen muss, dass der VLC (die VLC Player) das machen.


    Hat jemand schon mal ein MJPEG im lokalen Netz vom VLC (aus ner anderen Quelle umgewandelt) aus gestreamt?

    Was muss ich im VLC einstellen und ie lautet ein Beispielstring?


    Dann stelle ich das mal so ein und würde das Fehlerprotokoll hier hochladen.


    Dankeschön


    Gruß Markus

  • Hallo Markus,


    probiere folgende Vorgehensweise im VLC-Player aus.


    1) Menü Medien / Stream ... /

    2) Register Netzwerk / Adress-Eingabe (Kamera), Schaltfläche [Stream] anklicken

    3) Quelle wird angezeigt, Schaltfläche [Nächstes] anklicken

    4) Streamausgabe -> Neues Ziel [HTTP] auswählen und [Hinzufügen] anklicken

    5) Vorgaben Port und Pfad :8080/ übernehmen

    6) Transkodierung aktivieren und Profil [Video - H.264 + MP3 (TS)] auswählen, Schaltfläche [Nächstes] anklicken

    7) Anzeige des Ausgabestrings für die Kommandozeile mit Schaltfläche [Stream] aktivieren

    8 ) Zweite VLC-Instanz auf dem VLC-Server öffnen und die Adresse http://127.0.0.1:8080/ eingeben bzw. im KNX-Server die IP-Adresse des VLC-Servers mit der Portnummer :8080/ verwenden.


    MfG

    Thomas

  • Hallo und vielen Dank für die Info.


    Folgende Meldung bekomme ich dann...(mit der IP 127.0.0.1:8080/

  • Wenn ich die direkte IP des Rechners eingebe auf dem der 1. VLC läuft der ins Netzwerk verteilen soll...


  • Hallo Markus,


    in beiden Fehlerprotokollen findet man die Informationen:

    Code
    http debug: connection failed
    access error: HTTP connection failure
    ...
    main debug: dead input (kein Eingangsignal)


    Im ersten Protokoll wird noch die Angabe kein Eingangssignal ergänzt. Im zweiten Protokoll fehlt diese Information main debug: dead input.

    Würde mir ein anderes Eingangsignal zum Test des KNX-Servers auswählen, wie z.B. im verlinkten Beitrag "VLC-Player zeigt Camera-Stream nur 10sec" als Kommandozeilenscript vorgeschlagen.


    Die IP-Adresse http://127.0.0.1:8080/ funktioniert nur auf dem VLC-Server, dort, wo der Stream entgegen genommen und gleichzeitig als http-Stream im lokalen Netzwerk verteilt wird. Von einem anderen Computer im lokalen Netzwerk und dem KNX-Server muss die IP-Adresse des Computers mit der Portangabe :8080/ verwendet werden, wo der VLC-Server läuft.


    MfG

    Thomas

  • Hallo Markus,


    ich habe mir mal ein RTSP-Streambeispiel aus dem Beitrag "rtsp in URL (http) umwandeln" genommen und in ein Kommandozeilenbeispiel integriert.


    Das Kommandozeilenbeispiel ist für eine 64-Bit Version des VLC-Players.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "rtsp://s1.media-planet.sk/live/novezamky" :sout=#duplicate{dst=http{mux=ts,dst=:8080/},dst=display} :no-sout-all :sout-keep


    Im Beispiel wird ein rtsp-Stream entgegengenommen, lokal wiedergegeben und gleichzeitig als http-Stream im lokalen Netzwerk verteilt.

    Das Kommandozeilenbeispiel wird im Notepad-Editor bearbeitet und als *.bat Datei gespeichert, welche per Doppelklick ausgeführt wird.

    Den http-Stream kann man z.B. in einer zweiten VLC-Instanz auf dem gleichen Computer mit der Adresse http://127.0.0.1:8080/ wiedergeben.


    Auf einem anderen Computer im lokalen Netzwerk gibt man die Adresse http://IP-Adresse-Server:8080/ ein.


    Man kann das Kommandozeilenbeispiel auch noch mit einer Live-Transkodierung erweitern.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "rtsp://s1.media-planet.sk/live/novezamky" :sout=#transcode{vcodec=h264,vb=2500,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ts,dst=:8080/} :no-sout-all :sout-keep


    Im zweiten Kommandozeilen-Beispiel habe ich die lokale Wiedergabe des rtsp-Stream weg gelassen.


    MfG

    Thomas

  • Hi. und vielen Dank für deine Antworten.


    Ich habe mal gleich das 2. Beispiel ausprobiert.

    Ergebnis: Alles flutscht und so klappt es auch.


    Dann 2. Schritt....

    Ich habe dein Beispiel mit meinem RTSP Link abgeändert...

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "rtsp://192.168.2.97:554/Streaming/Channels/101/?transportmode=unicast" :sout=#transcode{vcodec=h264,vb=2500,acodec=mpga,ab=128,channels=2,samplerate=44100,scodec=none}:http{mux=ts,dst=:8080/} :no-sout-all :sout-keep


    Dann kommt folgende Fehlermeldung vom 2. VLC Player. Der Erste, der mit der .bat gestartet wird meldet nichts.

    Quote

    mjpeg error: cannot peek



    dann habe ich mal dein erstes Besipiel genommen (wo auf auf dem 1. VLC das Bild auch angezeigt wird) und diesen abgeändert.

    Das hat wunderbar funktioniert.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "rtsp://192.168.2.97:554/Streaming/Channels/101/?transportmode=unicast" :sout=#duplicate{dst=http{mux=ts,dst=:8080/},dst=display} :no-sout-all :sout-keep

    Nun stelle ich mir die Frage, wo das Problem ist....

    Ich denke es wäre weniger Leistungsfressend, wenn ich auf dem 1. das Bild eben nicht anzeige, oder?


    Jetzt habe ich noch probiert, den Stream via Browser (http://192.168.2.xxx:8080) zu öffnen. Das geht leider nicht.
    Auch so kann ich das in den Server nicht eintragen bzw. er zeigt mir nichts an. Wie müsste ich den Link genau eintragen, dass das flutscht (außerhalb vom VLC).


    Beispiel: so habe ich der Vergangenheit mit dem KNX Server auf die alte Kamera zugegriffen: 192.168.2.94/cgi-bin/viewer/video.jpg?resolution=640x400

    Das hat auch immer funktioniert.


    Dankeschön


    PS: Du bist kurz davor mein HELD zu werden :-)

  • Post by Markuskr32 ().

    This post was deleted by the author themselves ().
  • Man kann das zweite Kommandozeilenbeispiel auch verändern bzw. anpassen bezüglich der Parameter.


    Möglich wäre z.B. die folgende :sout= Option.

    Code
    :sout=#transcode{vcodec=MJPG,vb=800,scale=Automatisch,width=640,height=400,acodec=none,scodec=none}:http{mux=mpjpeg,dst=:8080/} :no-sout-all :sout-keep


    Es bleiben für mich viel Fragen offen, wie z.B. welche technischen Formate unterstützen der Eibport und der KNX-Server?

    - https://my.knx.org/


    Wenn als URL vom Eibport bzw. KNX-Server ein bestimmtes Format gefordert wird, z.B. "http://[IP-Adresse der Kamera]:[Portnummer]/image.jpg" sollte man dies auch berücksichtigen.

    - https://www.bab-tec.de/index.p…ntation_380_DE-190906.pdf


    Code
    :sout=#transcode{vcodec=MJPG,vb=800,scale=Automatisch,width=640,height=400,acodec=none,scodec=none}:http{mux=mpjpeg,dst=:8080/image.jpg} :no-sout-all :sout-keep


    MfG

    Thomas

  • Hi Thomas.


    Ich habe bezüglich der Kamera URL (wie muss die URL lauten, was muss enthalten sein, was darf nicht, usw...) mal den Hersteller des EibPort angeschrieben.


    Mal so zu Erklärung warum, wieso, weshalb....


    Ich warte mal auf die Info vom Hersteller des Servers und werde dies hier entsprechend mitteilen.

    Das Kameraproblem beim EibPort ist wohl das größte Thema welches immer wieder zu Problemen bei KNX-Usern führt..


    Des Weiteren habe ich mal deine Vorschläge in die .bat Dateien angepasst.

    Ergebnisse...


    -Klappt wunderbar von VLC zu VLC (Auflösung ist halt schei..e, aber das ist ja selbsterklärend und kann ja angepasst werden.

    -Im EibPort klappt es leider nicht wenn ich folgende URL eintrage --> http://192.168.2.223:8080

    -Im Eibport klappt es auch mit geänderter URL nicht... --> http://192.168.2.223:8080/image.jpg (Beispiel2 von Dir)

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" --network-caching=300 "rtsp://192.168.2.97:554/Streaming/Channels/101/?transportmode=unicast" :sout=#transcode{vcodec=MJPG,vb=800,scale=Automatisch,width=640,height=400,acodec=none,scodec=none}:http{mux=mpjpeg,dst=:8080/} :no-sout-all :sout-keep


    Evtl. fällt Dir ja noch was ein, was ich probieren könnte.


    Ansonsten warten wir mal die Antwort von BabTec ab. Evtl. können die uns/dir/mir :-) einen Tipp geben.


    Trotzdem nochmal vielen vielen Dank


    Gruß Markus

  • Hallo.


    Ich habe gerade eine Mail von BabTec (Hersteller des Servers) erhalten.


    Kann man mit dieser Info eine Aussage treffen?


    Kann der VLC so den Stream zur Verfügung stellen?



    Antwort von Babtec

    Dankeschön


    Gruß Markus

  • Hallo Markus,


    die Informationen von BabTec helfen mir nur bedingt weiter. Immerhin ist jetzt klar, entweder MJPEG oder JPEG als Format.

    Interessant wäre zu wissen, welche Bildrate pro Sekunde erfassbar ist (z.B. 10 Bilder pro Sekunde), welche maximale Bild-Auflösung (640×400) bzw. Bildseitenverhältnis (3:2, 4:3, 16:9) verarbeitet werden.



    In der Kommandozeilenhilfe findet man die Möglichkeiten, die einem der VLC-Player bietet.

    - https://wiki.videolan.org/VLC_command-line_help/

    Bezüglich MJPEG gibt es die Möglichkeit der Anpassung für die Anzahl der Bilder pro Sekunde.

    --mjpeg-fps= oder fps=


    Mit der Option --mjpeg-fps=10 war ich nicht erfolgreich.


    Erfolgreich war ich dagegen mit der Option fps=10 für die Stream-Ausgabe.

    Code
    :sout=#transcode{vcodec=MJPG,vb=800,fps=10,scale=Automatisch,width=640,height=400,acodec=none,scodec=none}:http{mux=mpjpeg,dst=:8080/} :no-sout-all :sout-keep


    Mit dem Kommandozeilensript kann man die Kamerabilder aufzeichnen und mit dem Tool "Mediainfo" die Daten vergleichen.

    - https://mediaarea.net/de/MediaInfo


    Füge Beispiele mit Informationen für zwei Videos hinzu.

    Man erkennt die unterschiedliche Bildwiederholrate.


    Wenn man eine Kamera hat, deren Ausgangssignal im Eibport übernommen wird, könnte man dieses Kamera-Signal im VLC-Player möglicherweise aufzeichnen und in Mediainfo öffnen. So könnte man Unterschiede feststellen.


    MfG

    Thomas

  • Hi.

    Ich habe hierzu 2 Punkte einzubringen.

    1. Hier nochmal eine tiefere Erklärung vom Hersteller des Servers bezüglich Auflösung usw. ( Thomas: deine Fragen auf Beitrag 15).



    2. Ich würde gerne das Tool "MediaInfo" nutzen um Euch hier noch ein paar mehr Infos bieten zu können. Nur irgendwie stehe ich da auf dem Schlauch bzw. machen etwas falsch. Wie muss ich hier genau vorgehen, dass ich die richtigen Infos liefere?


    Dankeschön


    Gruß Markus

  • Hallo Markus,


    1) zu Mediainfo

    Menü / Datei / Öffnen / Datei und das gespeicherte Video auswählen.

    Menü / Ansicht / Text auswählen und den Inhalt kopieren.


    2) Wenn die Kamera-Bilder abgeholt werden, ist der Weg über den VLC-Player einen http-Stream zu senden möglicherweise ungeeignet.

    Man könnte versuchen ein Snapshot-Verzeichnis zu erstellen, das unter Windows freigegeben wird und wo der KNX-Server zugreifen kann, um abgelegt Bilder zu öffnen.


    Hier im Beitrag wird das Thema bearbeitet.

    - https://www.vlc-forum.de/thread/4176-automatisch-videoschnappschüsse-per-kommandozeilenparameter-erstellen/


    Das angepasste Kommandozeilenbeispiel könnte so aussehen.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" "rtsp://192.168.2.97:554/Streaming/Channels/101/?transportmode=unicast" -I dummy --dummy-quiet --zoom=0.1 --video-filter=scene --scene-format=jpeg --scene-ratio=50 --scene-prefix=image --scene-replace --scene-path=C:\\Temp\\images\\ vlc://quit

    Jeder Snapshot wird als "image.jpeg" bezeichnet (Optionen --scene-prefix=image und --scene-format=jpeg) und im Verzeichnis "C:\Temp\images" gespeichert.Die Option --scene-replace sorgt dafür das jeder neue Snapshot den alten Dateinamen überschreibt.


    Das Kommandozeilenprogramm sollte ein kleines Bildschirmfenster erstellen, wo das Eingangsignal angezeigt wird.

    Beenden lässt sich das Kommandozeilenprogramm mit der Tastenkombination [Strg] + [Q].


    MfG

    Thomas

  • Hi und erneut vielen Dankt für deine Hilfe und Idee, dass via Bilder mit nem "Workarround" zu machen.


    Ich würde gerne die Bilder auf die Netzwerkfreigabe der Fritzbox laden lassen.


    Sollte ich den Code dann entsprechend anpassen?


    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" "http://root:xxxxx@192.168.2.94/video.mjpg?q=25&fps=25&id=0.5" -I dummy --dummy-quiet --zoom=0.1 --video-filter=scene --scene-format=jpeg --scene-ratio=50 --scene-prefix=image --scene-replace --scene-path=https://91.x.xx.xx/nas/filelink.lua?id=xxxxxxxxx vlc://quit

    Abrufen kann ich das Bild via KNX Server von der FritzBox (also wenn ich lokal dort ein Bild hochlade).


    Nun bräuchte ich nur noch den richtigen Code, dass auch der VLC dort immer wieder das Bild hoch lädt.


    Hier noch ein Tipp wäre super hilfreich.


    Dankeschön

  • Alternativ habe ich die Datei auch Lokal auf mein NAS in den Puplic Ordner gebracht....


    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" "http://root:xxxxxx@192.168.2.94/video.mjpg?q=25&fps=25&id=0.5" -I dummy --dummy-quiet --zoom=0.1 --video-filter=scene --scene-format=jpeg --scene-ratio=50 --scene-prefix=image --scene-replace --scene-path=\\NSA325-V2-K1\public\Kameras_Zwischenspeicher\Kamera_Eingang vlc://quit
  • Hi.


    Ich wollte hier nochmal Feedback geben.


    Ich habe nun die Freigabe auf meinem NAS eingerichtet und "Yehaaaaa", es flutscht.


    Nochmals vielen vielen Dank für Eure Hilfe (Speziell Thomas).


    Nun habe ich noch eine Frage dazu:
    Wie würde mein "Code" aussehen (sollte dieser verändert werden müssen), wenn ich den VLC Player auf nem Rasperry Pi laufen lassen will.

    Also wie würde die BAT Datei dann aussehen müssen?


    Hier mal der Code, den ich aktuell verwende, mit dem es geht.

    Code
    @echo off
    start "" "C:\Program Files\VideoLAN\VLC\vlc.exe" "http://root:xxxxx@192.168.2.94/video.mjpg?q=25&fps=25&id=0.5" -I dummy --dummy-quiet --zoom=0.1 --video-filter=scene --scene-format=jpeg --scene-ratio=50 --scene-prefix=image --scene-replace --scene-path=\\NSA325-V2-Kxxxxx1\public\Kameras_Zwischenspeicher\Kamera_Eingang vlc://quit
  • Bezüglich Kommandozeilenscripte im Raspberry Pi füge ich lieber einige Links mit Beispielen und weiteren Informationen hinzu.

    Am besten in einem Raspberry Pi-Forum nachfragen.


    - https://forum-raspberrypi.de/forum/

    - https://raspberry-projects.com…ng-video-using-vlc-player

    - https://raspberrypi.stackexcha…7/run-vlc-in-command-line

    - VLC oder CVLC ueber Eingaben vom Befehlsfenster bzw. aus Python Program steuern (Raspi)


    MfG

    Thomas