CamStream4Lox


AutorMichael Schlenstedt
Logo

Status

STABLE

Version2.0.1
Min. LB Version

 LB 1.2.5

Download

Release: https://github.com/mschlenstedt/LoxBerry-Plugin-CamStream4Lox/archive/camstream4lox-2.0.1.zip

Pre-Release: -

Zweck

Das CamStream4Lox Plugin konvertiert beliebige Videostreams in einen MJPEG-Stream, sodass der Stream in den Türsteuerungsbaustein eingebunden werden kann.

LanguagesEN, DE
Diskussionhttps://www.loxforum.com/forum/projektforen/loxberry/plugins/163516-plugin-camstream4lox-fast-jede-kamera-in-den-t%C3%BCrsteuerungsbaustein
 Version History...

Nutze die Beobachten-Funktion rechts oben um über neue Versionen informiert zu werden. 

Inhalt




Aufgabe des Plugins

Das CamStream4Lox Plugin konvertiert beliebige Kamera-/Video-Streams in MJPEG-Streams um, sodass auch Kameras, die kein MJPEG bieten, mit dem Türsteuerungsbaustein verwendet werden können. Die Konvertierung übernimmt dabei die Software VideoLANClient. VLC kann so ziemlich alle gängigen Codecs und Videoformate decodieren. Eine vollständige Liste findet sich hier: https://www.videolan.org/vlc/features.html

Das Plugin holt dabei den Original-Stream von der Webcam ab, konvertiert ihn nach MJPEG und streamt ihn wieder ins eigene Netzwerk. Von dort kann er vom Türsteuerungsbautein "abgeholt" werden. Hat man eine Kamera, die bereits einen MJPEG-Stream zur Verfügung stellt, diesen aber nur an einen einzigen Client wiedergeben kann (z. B. die Cams von Hikvision), so kann das Plugin mit der Software VLC diesen einen Stream einfach wieder ins Netzwerk re-streamen (ohne Konvertierung). Damit steht er dann auf mehreren Clients zur Verfügung. Diese Variante benötigt so gut wie keine Systemressourcen. 

Einige Worte zur Systemauslastung...

Das Plugin kann technisch gesehen mehr oder weniger jeden Stream in jeder Qualität in einen MJPEG-Stream wandeln. Und das auch für beliebig viele Kameras (vorgesehen sind erst einmal 10 Kameras, das könnte aber beliebig erweitert werden). Aber die Hardware begrenzt die Möglichkeiten sehr stark! Die Konvertierung eines Videostreams benötigt sehr viel CPU-Last - je höher die Qualität des Streams ist (Größe, Bitrate), desto höher sind die Anforderungen an die Hardware.

Anders sieht es aus, wenn lediglich ein vorhandener MJPEG.Stream wieder ins Netzwerk zurückgestreamt werden soll (z. B. weil die Kamera selbst nur den Zugriff von einem einzigen Client auf ihren MJPEG-Stream zu lässt). Hier können problemlos 10 Kameras auf einem Raspberry 3 eingerichtet werden.

Soll der Stream aber konvertiert werden (z. B. aus einem H.264 Stream), gilt es als ersten Schritt die Videoqualität in der Kamera so gering wie nur irgendwie möglich einzustellen. Man sollte die Videogröße und die Bitrate soweit herunternehmen, bis das Bild gerade noch akzeptabel ist. Bietet die Kamera einen MJPEG-Stream an, so sollte man diesen als Basis für das Plugin verwenden. Anschließend wählt man im Plugin möglichst identische Einstellungen wie bereits in der Kamera, also insbesondere wieder Bitrate, Framerate und Bildgröße. Das hat zum Ziel, dass die Konvertierung vom Original-Stream in den MJPEG-Stream möglichst wenig Änderungen und Neuberechnungen der Bilder durchführen muss.

Nachdem man das Plugin aktiviert hat, sollte man die CPU-Auslastung des LoxBerrys kontrollieren. Das geht in den Systemeinstellungen über das Widget "Mein LoxBerry" → "System Informationen". Einige Beispiele auf einer Hikvision-Kamera:

Kameraeinstellungen und daraus resultierende Systemauslastung:

MJPEG-Stream einer Hikvision-Kamera in 640x480 und 2 MBit, um mit mehreren Clients darauf zugreifen zu können, auf einem Pi2:

    

H.264-Stream einer Hikvision-Kamera in 640x480 und 2 MBit auf einem Pi2:

  


Download

Fehlerberichte


Fehlerberichte bitte direkt im Repository auf GitHub melden.


VLC Konfigurationsoptionen

Mit VLC kannst Du sowohl einen MJPEG.Stream von der Kamera zurück ins Netzwerk streamen als auch einen vorhandenen Stream (z. B. H.264) in einen MJPEG-Stream konvertieren (bei VLC heisst das transkodieren). 

VideoLANClient: Server Einstellungen

VLC neustarten

Mit dieser Option werden alle VLC-Instanzen einmal am Tag (nachts um ca. 4:00 Uhr) neu gestartet. Verwende diese Funktion, wenn Du Probleme mit der Stabilität der Kamerastreams hast.

Start HTTP Port

Jeder Kamerastream benötigt ihren eigenen HTTP Port. Dieses ist der Start-Port, von dem aus hochgezählt wird. Normalerweise muss der Port nicht geändert werden, außer ein anderer Dienst auf Deinem LoxBerry verwendet bereits den Standardport 4001-4010.

Username und Passwort

Wenn Du die Kaermastreams zusätzlich per HTACCESS-Methode mit Username und Passwort schützen möchtest, gebe hier die entsprechenden Zugangsdaten ein. Denke daran, dass Du diese Zugangsdaten dann auch im Türstuerungsbaustein mit angeben musst!

Streaming Kamera

Aktiviere Kamera Stream

Der Stream wird aktiviert und im Plugin verwendet. Bei einem System-Neustart wird der Stream automatisch wieder gestartet. zudem wird der Stream permanent überwacht und bei Absturz neu gestartet.

Kamera Stream URL

Die URL, unter der der Kamerastream erreichbar ist. Bitte teste die URL unbedingt vorher z. B. mit VLC unter Windows. Für einen ersten test kannst Du auch den Testen-Button verwenden. Sollte eine Authentifizierung an der Kamera notwendig sein, so stelle bitte die Zugangsdaten in folgender Form der URL voran:

http://username:passwort@ipadresse_camera/streamingurl/stream/1.mjpeg

Standbildgröße

Die Bildgröße für das Standbild (Bild bei Klingeln). Die Eingabe erfolgt in Pixeln. Wenn Du das Seitenverhältnis beibehalten möchtest, gebe hier z. B. nur die Breite ein und lasse die Höhe frei. Kleinere Bilder lasen in der Loxone App schneller. Wähle also nicht eine unnötig große Bildgröße.

Zusätzliche Stream/Output Optionen

Nur für Experten! Hier kannst Du zusätzliche Optionen für die Output-Sektion des VLC-Aufrufs angeben. Du musst absolut wissen, was Du hier tust. Sonst lässt Du es besser leer.

Stream nach MJPEG transkodieren

Wenn der Kamerastream nicht im MJPEG-Format zur Verfügung steht, musst Du die Option natürlich aktivieren. Damit wird der Kamerastream nach MJPEG konvertiert.

Videobitrate

Bitrate des MJPEG-Ausgabe-Videostreams. Achte darauf möglichst die gleiche Bitrate wie im Original-Stream der Kamera einzustellen. Setze die Bitrate so niedrig wie möglich!

Videoframerate

Framerate des MJPEG-Ausgabe-Videostreams. Achte darauf möglichst die gleiche Framerate wie im Original-Stream der Kamera einzustellen. Setze die Framerate so niedrig wie möglich! 10-15 Bilder/s sollten vollkommen ausreichen.

Videogröße

Die Videogröße des MJPEG-Ausgabe-Videostreams. Die Eingabe erfolgt in Pixeln. Wenn Du das Seitenverhältnis beibehalten möchtest, gebe hier z. B. nur die Breite ein und lasse die Höhe frei.

Zusätzliche Transcode Optionen

Nur für Experten! Hier kannst Du zusätzliche Optionen für die Transcode-Sektion des VLC-Aufrufs angeben. Du musst absolut wissen, was Du hier tust. Sonst lässt Du es besser leer.

 

FFServer: Konfigurationsoptionen

Warnung

FFServer wird seit Debian Buster nicht mehr unterstützt. Der Grund ist, dass FFServer bereits seit 2016 nicht mehr weiterentwickelt wird und somit aus der Debian Distribution entfernt wurde. Siehe https://ffmpeg.org/index.html#ffserv Damit ist diese Option ab LoxBerry 2.0 nicht mehr verfügbar und wird auch nicht mehr weiterentwickelt!

Server Einstellungen

Starte FFServer

FFserver ist die Software, die den konvertierten Stream in Dein Netzwerk als MJPEG Stream zurückstreamt. Er muss laufen, damit der Türsteuerungsbaustein auf den MJPEG Stream zugreifen kann. Wenn diese Option aktiviert wird, wird der FFServer automatisch gestartet und auch permanent überwacht. Bricht einer der abgerufenen Streams ab oder stürzt FFserver ab, so wird er automatisch neu gestartet.

FFServer neustarten

Mit dieser Option wird FFServer einmal am Tag (nachts um ca. 4:00 Uhr) neu gestartet. Verwende diese Funktion, wenn Du Probleme mit der Stabilität der Kamerastreams hast.

HTTP Port

Auf diesem Port läuft der FFServer. Normalerweise muss der Port nicht geändert werden, außer ein anderer Dienst auf Deinem LoxBerry verwendet bereits den Standardport 8091.

Temp. Pfad

FFserver puffert jeden abgerufen Stream in einer temporären Datei. Hier stellst Du ein, wo diese Datei gespeichert werden soll.

Warnung

Du solltest hier unbedingt einen USB-Datenträger (z. B. ein kleinen kleinen 1GB oder 2 GB Stick) verwenden! Das Plugin speichert permanent Daten in dieser Datei. Wird diese temporäre Datei auf der SD-Karte gespeichert, wird diese nicht lange durchhalten. Alternativ kannst Du auch ein Netzwerk-Share angeben. Hier muss aber eine sehr gute Verbindung zwischen LoxBerry und Share sichergestellt sein.

Bufffer-Größe

Hier kannst Du die Größe der temporären Datei ändern. Normalerweise sollte die Voreinstellung von 200 MB ausreichen. Wenn Du probleme mit Verbindungsabbrüchen hast, kannst Du versuchen die Datei zu vergrößern. Beachte, dass für jeden abgerufenen Stream eine Datei angelegt wird! Es muss also genügend Platz in Deinem temporären Pfad zur Verfügung stehen!

Streaming Kamera

Aktiviere Kamera Stream

Der Stream wird aktiviert und im Plugin verwendet.

Kamera Stream URL

Die URL, unter der der Kamerastream erreichbar ist. Bitte teste die URL unbedingt vorher z. B. mit VLC. Sollte eine Authentifizierung an der Kamera notwendig sein, so stelle bitte die Zugangsdaten in folgender Form der URL voran:

rtsp://username:passwort@ipadresse_camera/streamingurl/stream/1

Videobitrate

Bitrate des MJPEG-Videostreams. Achte darauf möglichst die gleiche Bitrate wie im Original-Stream der Kamera einzustellen. Setze die Bitrate so niedrig wie möglich!

Videoframerate

Framerate des MJPEG-Videostreams. Achte darauf möglichst die gleiche Framerate wie im Original-Stream der Kamera einzustellen. Setze die Framerate so niedrig wie möglich! 10-15 Bilder/s sollten vollkommen ausreichen.

Videogröße

Bildgröße des MJPEG-Videostreams im Format Breite x Höhe, z. B. "640x480". Achte darauf möglichst die gleiche Größe wie im Original-Stream der Kamera einzustellen. Setze die Größe so niedrig wie möglich!

Video GOPsize

Ein Intra-Frame wird alle n Frames gesendet. Die Videosynchronisation kann nur an diesen Intra-Frames stattfinden. Die Voreinstellung von 5 sollte in den meisten Fällen ausreichen. Details in der Dokumentation von FFserver.

Video Qmin / Video Qmax

Qualitätseinstellungen des MJPEG-Streams. Die voreingestellten Standardwerte sollten ausreichen. Details in der Dokumentation von FFserver.

Extra Feed Optionen / Extra Stream Optionen

Nur für Experten! Wenn Du weitere Einstellungen pro Feed oder Stream vornehmen möchtest, kannst Du hier weitere Optionen in einer Komma-separierten Liste angeben. Details in der Dokumentation von FFserver. Die Angabe erfolgt im gleichen Format wie die Konfigurtionsdatei von FFserver:

option1 value,option2 value

Aktiviere Klingelbild

Ist diese Option aktiviert, wird auch ein Standbild für das Klingelbild im Türsteuerungsbaustein erzeugt. So kann man z. B. ein kleineres Format für das klingelbild verwenden als es die Kamera bietet. Das hat den Vorteil, dass die Seite mit den Klingelbildern in der Loxone App wesentlich schneller läd.

Bildgröße

Bildgröße des Klingelbilds im Format Breite x Höhe, z. B. "640x480".

Extra Bild Optionen

Nur für Experten! Wenn Du weitere Einstellungen für den Bild-Stream vornehmen möchtest, kannst Du hier weitere Optionen in einer Komma-separierten Liste angeben. Details in der Dokumentation von FFserver. Die Angabe erfolgt im gleichen Format wie die Konfigurtionsdatei von FFserver:

option1 value,option2 value

  

Multiview

Das Plugin fügt jede aktivierte Kamera in eine simple Webseite ein, die über den Webage-Baustein in die Loxone Config integriert werden kann. So kann man sich mit einem Klick alle Kameras auf einem Blick anschauen. Ein Klick auf das jeweilige Kamerabild öffnet den Kamerastream im Großformat.