Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Der Türsteuerungsbaustein der Loxone setzt einen MJPEG-Stream voraus, damit eine Kamera integriert werden kann. Viele Kameras bieten allerdings keinen MJPEG-Stream an oder beschränken den Zugriff auf den MJPEG-Stream auf maximal einen Client (Hikvision). Weit verbreitet ist mittlerweile das Streamen im effizienten H.264-Format, womit der Türsteuerungsbaustein aber nichts anfangen kann.

Wer einen Raspberry (oder sonstigen Server) im Heimnetzwerk laufen hat, kann jedoch mit der kostenlosen Software VLC (VideoLANClient), die es für alle gängigen Betriebssysteme gibt, (fast) jeden Kamerastream in Echtzeit in das für den Türsteuerungsbaustein passende MJPEG-Format konvertieren.

Die folgende Beschreibung geht von einem Raspberry mit dem Betriebssystem Raspbian aus. Bei anderen Betriebssystemen müssen Pfadangaben eventuell angepasst werden.

Voraussetzungen und Installation

Einen Kamerastream von H.264 in MJPEG umzuwandeln benötigt einiges an Prozessorleistung. Bietet der Server entsprechende spezielle Chips, um Multimediaformate umzuwandeln, reduziert sich natürlich die Arbeit der CPU. Ein Raspberry1 reicht für die nachfolgende Anleitung von der Leistung her aus, ist aber an seiner Grenze und mit der Aufgabe voll ausgelastet. Besser ist es gleich auf einen Raspberry2 oder 3 auszuweichen. Möchte man die Anleitung auf einem NAS umsetzen wird das vermutlich nur gelingen, wenn das NAS spezielle Chips zur Echtzeit-Konvertierung von Multimediaformaten mit an Bord hat.

Als erstes installiert man die Software VLC, wir benötigen später nur die Kommandozeilenversion cvlc:

sudo apt-get install vlc

Damit sind alle Voraussetzungen bereits erledigt. Natürlich muss man die STREAM-Adresse der Kamera noch kennen. Meist hilft hier eine Google-Recherche, wenn die Anleitung der Kamera dazu keine weiteren Informationen enthält. Nützlich ist es die Streamadresse zuvor auf dem eigenen Computer mit der Windows-Version des VLC zu testen, damit man sicher sein kann, dass die URL auch funktioniert.

Im folgenden nehme ich als Beispiel die folgende Stream-URL:

rtsp://username:password@CAM_IPADRESSE/Streaming/Channels/1

Konfiguration

Auf der Kommandozeile gibt man jetzt folgenden Befehl als normaler Benutzer (nicht als "root") ein:

cvlc -I dummy -v -R rtsp://username:password@CAM_IPADRESSE/Streaming/Channels/1 --sout='#transcode{threads=2,acodec=none,vcodec=MJPG,vb=1500,width=640,height=480,fps=10}:standard{mux=mpjpeg,access=http{user=stream,pwd=stream,mime=multipart/x-mixed-replace; boundary=--7b3cc56e5f51db803f790dad720ed50a},dst=:8080/cam.mjpg}' --sout-keep

VLC wird mit diesem Aufruf gestartet und der Original-Stream der Kamera wird in einen MJPEG-Stream konvertiert und unter der folgenden Adresse wieder ins eigene Netzwerk gestreamt:

http://stream:stream@RASPPI_IPADRESSE:8080/cam.mjpg

Am Besten testet man wieder mit dem VLC auf dem Windowsrechner, ob man unter dieser URL den konvertierten Stream erreichen kann. Der VLC gibt mit dieser Einstellung auch einige Meldungen aus. Hierbei kann man die Hinweise bzgl. Interface, Audio und Display erst einmal ignorieren. Sie sagen nur aus, dass auf der Konsole kein Fenster mit dem Videostream geöffnet werden kann. Möchte man noch mehr Meldungen erhalten (z. B. wenn etwas nicht wie geplant funktioniert), kann man die Ausgaben erweitern, indem man die Option "-v" im Aufruf erweitert auf "-vv" oder "-vvv".

Beendet wird der Aufruf mit einem "Strg+C" im Konsolenfenster.

Die Qualität des MJPEG-Streams kann man über die entsprechenden Optionen noch anpassen. Generell sollte man nur eine Größe und Qulität wählen, die man auch benötigt, um möglichst keine Ressourcen zu verschwenden.

OptionErläuterung
vb=Bitrate in Bytes/sec, hier 1500 Bytes/sec
fps=Bilder pro Sekunde, hier 10 Bilder/Sekunde

Width=

Height=

Breite und Höhe des Videobildes, hier 640x480 Pixel

user=

pwd=

Username und Passwort, mit dem der MJPEG-Stream geschützt wird, hier z. B. stream:stream

 

 

Wer lediglich das Problem hat, dass die Kamera nur einen Client für den MJPEG-Stram zeitgleich zulässt (so wie die Hikvision-Kameras), man aber mit mehreren Clients (z. B. mehreren Tablets, die an der Wand hängen) zeitgleich darauf zugreifen möchte, der sollte den Konvertierungsschritt überspringen (der sehr viele Ressourcen benötigt) und einfach nur den Kamera-MJPEG-Stream ohne Änderung per VLC wieder zurück ins Netzwerk streamen. Dazu dient der folgende Aufruf von VLC:

cvlc -R http://username:password@CAM_IPADRESSE/STREAM_MJPEG.mjpg --sout='#std{access=http{user=stream,pwd=stream,mime=multipart/x-mixed-replace;boundary=--7b3cc56e5f51db803f790dad720ed50a},mux=mpjpeg,dst=:8080/cam.mjpg}' --sout-keep
 

Installation

Hat im vorherigen Kapitel alles geklappt kann man den Aufruf nun in den Systemstart integrieren. Somit wird automatisch beim Booten der MJPEG-Stream gestartet. Für eigene Aufrufe während des Systemstarts dient die Datei /etc/rc.local. Hier fügt man vor der letzten Zeile, die "exit 0" lautet, mit einem Texteditor den folgenden Befehl ein (Wichtig! Nicht das &-Zeichen am Ende vergessen!!!):

su pi -c "cvlc -I dummy -v -R rtsp://username:password@CAM_IPADRESSE/Streaming/Channels/1 --sout='#transcode{threads=2,acodec=none,vcodec=MJPG,vb=1500,width=640,height=480,fps=10}:standard{mux=mpjpeg,access=http{user=stream,pwd=stream,mime=multipart/x-mixed-replace; boundary=--7b3cc56e5f51db803f790dad720ed50a},dst=:8080/cam.mjpg}' --sout-keep &"

Es handelt sich dabei um den gleichen Befehl wie unter "Konfiguration" ermittelt, lediglich wird dem Befehl der su-Befehl vorangestellt und dem Aufruf von cvlc ein &-Zeichen angefügt. Der cvlc-Befehl muss in Anführungsstriche gesetzt werden. Dieser Aufruf hat zur Folge, dass der cvlc als Benutzer "pi" (der Standardbenutzer auf einem Rapsberry) und nicht als root (wie sonst beim Systemstart üblich) ausgeführt wird. Zudem wird er durch das angehängte &-Zeichen im Hintergrund ausgeführt und der Bootprozess läuft nach Aufruf des Befehls weiter durch.

LoxConfig

In LoxConfig wird im Türsteuerungsbaustein nun unter "URL Videostream (intern)" die Adresse des MJPEG-Streams vom VLC eingegeben. Der gewählte Username und das Passwort kommen ebenfalls in die entsprechenden Eigenschaften-Felder:

Verwandte Themen

 

8 Kommentare

  1. Hallo Michael!

     

    ich habe deinen Bericht mit Interesse gelesen.

    Ich habe ebenfalls die Herausforderung, eine Kamera einzubinden, welche durch Loxone nicht unterstützt wird. Es handelt sich um eine Higkam S5, ebenfalls mit einem "rtsp... Format".
    ich habe aber keinen Raspberry sondern bei mir läuft die VLC SW auf meinem Windows Server, der im internen Hausnetz hängt.

    Meine Frage → wie gehe ich nun vor, damit ich von diesem Windows Rechner mit der laufenden VLC das Bild auf die Loxone bekomme.

    Kannst Du mir dazu eventuell weiterhelfen?

     

    LG

     

  2. Werde mir das mal ansehen. Vielleicht kann ich das ins Plugin mit einbauen.

    https://github.com/Woersty/LoxBerry-Plugin-cam-connect/issues/2

  3. Mein Raspberry 2 ist eigentlich zu langsam dafür.  Es geht zwar, aber er hat 100% Last. Ist das wirklich sinnvoll, das mit ins Plugin aufzunehmen?

  4. Vielleicht mit Warnung? Kommt vielleicht auch darauf an welche Auflösung man wählt? Wäre auch interessant was ein RaspPi3 dazu sagt...

    1. Hab keinen 3er da. Ich habe es gestern versucht, aber selbst bei weniger fps, Aufkösung und Bandbreite mit dem 2er RPi nichts zu wollen. (traurig)

      1. Herbert sagt:

        aus aktuellem eigeninteresse: hast du nochmal drüber nachgedacht das plugin für den loxberry zu machen? es wäre schon fein (eben mit dem hinweis, dass der pi vielleicht nicht mitkommt), da ja viele loxberry als vm betreiben. da ist die rechenleistung kein thema. mit dem 3er pi könnts btw auch schon klappen. bitte! danke! (Zwinkern) 

        1. Habe mir inzwischen auch einen 3er gekauft. Schaue mir das bei Gelegenheit nochmal an. Momentan leider aus Zeitknappheit nicht dran zu denken.

          1. Herbert sagt:

            Muss meine Aussage, dass es tadellos funktioniert, leider revidieren. Im Moment schaff ich es nicht, dass es länger als vielleicht eine Minute läuft.

            kA was ich falsch mache aber am Setup liegts vermutlich nicht.