Zum Ende der Metadaten springen
Zum Anfang der Metadaten


AutorMichael Schlenstedt
Logo

Status

STABLE

Version1.0.0
Kompatibilität

LB 0.2.3 LB 1.2.5

Download

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

Zweck

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

 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 FFmpeg bzw. FFserver oder VideoLANClient. FFmpeg kann so ziemlich alle gängigen Codecs und Videoformate decodieren. Eine vollständige Liste findet sich hier: https://www.ffmpeg.org/general.html#Supported-File-Formats_002c-Codecs-or-Features

  • MOV/QuickTime/MP4
  • MPEG-1
  • MPEG-2
  • MPEG-4
  • MJPEG
  • RealMedia
  • RTSP
  • WebM
  • VC-1
  • FLV
  • H.261
  • H.263 / H.263+
  • H.264
  • WMV7/8/9
  • ...und viele mehr

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. Hikvision), so kann das Plugin mit der Software VLC diesen einen Stream einfach wieder ins Netzwerk streamen (ohne Konvertierung). Damit steht er dann auf mehreren Clients zur Verfügung. Diese Varinte 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 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 (kann diesen aber z. B. nur an einen Client weitergeben wie die Hikvision-Kameras), 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.

FFServer: Konfigurationsoptionen

Verwende FFServer, wenn Du einen Kamerastream ins MJPEG-Format konvertieren musst. Bietet Deine Kamera bereits einen MJPEG-Stream, den Du nur ins Netzwerk zurückstreamen möchtest, versuche zunächst VLC (siehe unten). VLC benötigt deutlich weniger Systemressourcen als FFServer!

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

 

VLC Konfigurationsoptionen

MIt VLC kannst Du einen MJPEG.Stream von der Kamera zurück ins Netzwerk streamen. Das ist sinnvoll, wenn Deine Kamera nur den Zugriff eines Clients auf den MJPEG-Stream unterstützt, Du aber den gleichzeitigen Zugriff von mehreren Clients auf den Stream benötigst. VLC benötigt zum restreamen so gut wie keine Systemressourcen, sodass sich problemlos mehrere Kameras einrichten lassen. Wenn Du hingegen einen Stream konvertieren musst, nimm FFServer (siehe oben).

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.

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.

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. HIer darf nur ein MJPEG-Stream der Kamera angegeben werden! Bietet Deine Kamera keinen MJPEG-Stream und willst Du daher einen vorhandenen Stream konvertieren, musst Du FFServer (siehe oben) 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

 

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.

 


8 Kommentare

  1. Aaron Erhart sagt:

    Hallo Michael!

    Erstmal Danke für dieses super Plugin!

    Bei mir startet hin und wieder der FFServer nicht. Wenn ich dann Start, Stopo oder Neustart drücke passiert meistens auch nichts.

    Um das Problem schnellstmöglich zu beheben muss ich das Plugin deinstallieren und neu installieren.

    Kannst du mit sagen an was das liegen könnte?

    Ich verwende den Raspberry Pi 3 Modell B.


    Schöne Grüße

    Aaron

    1. Simon St. sagt:

      Hallo Michael, kann mich Aaron nur anschließen, super Plugin! Habe aber auch leider das gleiche Problem mit dem Start des FFserver. Zugegeben nur relevant nach Loxberry Neustart! Sonst läuft das Plugin stabil und auf meinem B+ Pi mit 8,6% Overall CPU Usage. Gruß, Simon

  2. Juraj sagt:

    any way to add password to stream? its ideally for externall access 

  3. Hans Truyts sagt:

    The plugin works nice, with a samsung smartcam HD, It is recommended to use a low res stream to start with to minimize the processor load.


    Is it possible to use this extern? What is the link a have to use? Port 8090 is open.

  4. Hi,

    hab das Plugin installiert. Das Kamera Bild funktioniert, aber leider nicht der Videostream.


    Was mir aufgefallen ist das dort PID FFmpeg: Läuft nicht steht. Denke er kann daher den Stream nicht in mpeg wandeln. Was kann ich tun?

  5. Installation auf einem Loxberry Version 1.2.4.6 nicht möglich. Bricht mit dem Fehler "die Version ist größer als die für die Installation benötigte Version " ab.

      1. Danke, hab ich im Forum nach deiner Antwort auch gelesen. Pardon.

        Welche Cam's unterstützt werden is noch nich bekannt/dokumentiert?