Kamera ohne MJPEG Stream im Türsteuerungsbaustein verwenden
Alternativen
Die hier aufgezeigte Lösung funktioniert manchmal etwas "hakelig" oder stützt oft ab. Reproduzierbar war das leider nicht. Beim Autor lief sie über 2 Jahre lang stabil, mit Update des Raspberry wurde der Stream sehr instabil.
Daher empfehlen wir nicht diese Lösung sondern die Einbindung per FFmpeg / FFserver zu verwenden. Diese gibt es auch als fertiges LoxBerry-Plugin, wo keinerlei Kommandozeilen- oder Linuxkenntnisse notwendig sind: CamStream4Lox
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:
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.
Option | Erlä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!!!):
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