Überwachungskamera (RTSP-Stream) in FTUI anzeigen

Begonnen von aloz77, 04 Februar 2016, 17:10:44

Vorheriges Thema - Nächstes Thema

misux

Zitat von: neyzen am 16 August 2020, 02:14:54
Jemand ne idee?

??? Ähm... also wen ich deine Frage richtig verstanden habe... Du möchtestden RTSP Stream im FTUI darstellen? Das geht nicht... Jedenfalls nicht so einfach , darum gibt es ja diesen Thread hier..

Thomas41587

Also ich habe ebenfalls sehr lange mit den RTSP Streams in der Tablet UI rum gemacht, bis ich jetzt (endlich!) die Lösung gefunden habe: Motieneye! Läuft bei mir in einem docker-container und konvertiert fleißig die Streams meiner beiden Reolink-Cams in das MJPG format, sodass ich das ganze in der Tablet UI darstellen kan.
Einstellungen in MotionEye sind selbsterklären, auch wenn die UI etwas gewöhnungsbedürftig ist. Das ganze läuft bei mir seit ~6 Wochen ohne Probleme.

neyzen

Aber MJPG sind doch Bilddateien. Also aktualisierst du jede Sekunde die Bilder in der FTUI?
Den so mach ich es auch aktuell, aber ohne irgendeine zusätzliches Tool. Bei Reolink kann man über einen link die Bilder direkt abrufen.

Thomas41587

MJPEG ist ein stream aus Bildern. Hier muss man nichts manuell aktualisieren. Der zugehörige Sourcecode sieht so aus:
<div data-type="image"
data-url="http://192.168.1.2:8022/"
data-size="100%" data-opacity="1" class="nocache">
</div>

neyzen

Aha...
Die URL ist dann der Link den du von Motioneye bekommst, der dein rtsp auf mjpg umwandelt?

Thomas41587

Ja genau. Hier auch mal beispielhaft die config aus Motioneye als Anhang. Wäre vor einigen Monaten froh gewesen, diesen einfachen Weg zu kennen.

neyzen

Ich hab noch auf meinem Tablet die App Tinycam pro. Da kann man das auch als websever laufen lassen. Sollte Analog zu deinem Weg auch funktionieren. Aber irgendwie hatte ich noch keine Zeit mich mit dem Weg zu beschäftigen. Das schau ich mir mal an.
Und noch ne Frage. Ist der Stream dann flüssig, oder hakt der mal?

Thomas41587

Der Stream ist bei mir so flüssig, wie er eingestellt ist. Die eine cam wird mit 2 Bildern/s die andere mit 5 Bildern/s konvertiert. Selbstverständlich kann man auch mit 20 oder 30 Bildern/s arbeiten, aber das verursacht mir zuviel System- und Netzwerklast. Die 5 Bilder reichen problemlos um Besucher zu erkennen und für den Garten sind 2 Bilder ebenfalls mehr als ausreichend...

neyzen

Ich hab es jetzt mit tinycam pro ebenfalls zum laufen gebracht. Analog zu deiner Vorgehensweise. Vielen Dank für den Tip.
Der stream ist auf jeden fall flüssiger als mit der Bildaktualisierung jede Sekunde.
Wie ist es den mit dem volllaufen des Speichers, wenn der Stream die ganze Seit läuft. Der Cache Speicher wird vermutlich nach einer Zeit Volllaufen oder?

neyzen

Ich hab jetzt heute Morgen gesehen, dass das Bild immer wieder Stockt oder es gar kein Stream anzeigt. Ein Tablet Neustart hilft hier nicht.  :-\

AlpenFlizzer

#100
Hallo zusammen!

Da dieses Thema ja echt einigen schwer unter den Fingernägeln zu brennen scheint, möchte ich meinen aktuellen Ansatz mit euch teilen. Mich würde außerdem interessieren, ob andere dieses Setup auch umgesetzt bekommen... Abgesehen davon, will ich gesagt haben, dass ich keine der anderen vorgeschlagenen Lösungen besser oder schlechter finde! :-) Vorteile dieser Lösung sind unter Anderem Echtzeit, und die Auflösung, welche die Cam unterstützt. (zB Full-HD)

Ich nutze jetzt https://github.com/mpromonet/webrtc-streamer, einen kleinen Server der RTSP Quellen via WebRTC an diverse Browser zuspielt. Frühere Versuche mit dem Janus Mediagateway, welches eigentlich die selbe Aufgabe erledigen soll waren da weniger erfolgreich.

In folgendem Repo habe ich eine relativ fertige und einfache Variante für unsere Zwecke zusammengestellt: https://github.com/AlpenFlizzer/webrtc-streamer-docker-compose. Getestet habe ich wie beschrieben auf einem Raspi 3B und in einer Ubuntu VM auf meinem Proxmox-Server (Intel NUC Pentium Silver J5005).

Mittels "git clone" wird das Repo geclont. Dann muss lediglich in der Datei config.json im Verzeichnis /webrtc-streamer der/die RTSP Urls eingetragen werden und mit "docker-compose up -d" (eventuell ist ein sudo davor nötig - anderes Thema) der Container gestartet werden. Einzige Voraussetzung ist also git, docker und docker-compose (zB sudo apt install -y git docker docker-compose)

Danach kann man die Streams im Browser zB fully, Chrome, Firefox, etc. unter http://<ip-webrtc-streamer-server>:8000 ansehen. Standardmäßig ist ein Demo Stream dabei...

Die Datei demo.html kann als Vorlage für die Integration in FTUI verwendet werden.

Wichtige Infos: wenn die FTUI per https angesurft wird, muss auch der webrtc-streamer https gesichert sein - Mixed Content ist nicht erlaubt in Fhem. Passwortgesicherte RTSP Urls einfach mit rtsp://user:passwd@<rtsp-ip>/bla/bla in die config.json eintragen.

Vielleicht hilfts ja wem.

LG Sascha






curt

Zitat von: Thomas41587 am 30 September 2020, 14:08:20
MJPEG ist ein stream aus Bildern. Hier muss man nichts manuell aktualisieren. Der zugehörige Sourcecode sieht so aus:
<div data-type="image"
data-url="http://192.168.1.2:8022/"
data-size="100%" data-opacity="1" class="nocache">
</div>


Ich will mal zwischendurch danke sagen: Dein Codebeispiel hat mir sehr geholfen.

(Ich habe auf mehreren RPi Zero mit Kamera MotionEyeOS laufen. Die Bewegungserkennung wird von dort zu einem Reading in FHEM. Dieses wiederum wird in FTUI bei erkannter Bewegung als Schaltfläche angezeigt. Wenn ich nun darauf klicke, bekomme ich ein popup - mit dem Stream, dank Deines Codebeispiels.)
RPI 4 - Jeelink HomeMatic Z-Wave

Funsailor

Hallo Sascha,
ich wollte den Stream auf einer https:\\.... Seite darstellen.
Leider finde ich keine Infos wie man den webrtc-streamer https gesichert aufruft...
Hat da jemand einen Link/Tip?
- Asus PN 41- mapleCul V1.24.01 - FHEMDuino - FHEM 6.2 - HUE Bridge - ESPEasy Bridge -  Milight HUB - smartVISU 3.40 -

AlpenFlizzer

Servus,

ich habe https in meinem Repo jetzt eingepflegt. Versuchs nochmal.

Man kann mittels "command" Option in der docker-compose.yml die start-flags vom webrtc-streamer anpassen - unter anderem https Port und den Pfad zu dem Zertifikat/Key.

Grüße, Sascha

Funsailor

#104
Hallo Sascha,
danke für deine schnelle Antwort.
Ich habe nochmals die Schritte durchgeführt ( "git clone" das Repo geclont) und die config.json angepasst.
Dann wie in der Datei
/root/webrtc-streamer-docker-compose/webrtc-streamer/ssl/Readme.md
beschrieben die Zertifikate erzeugt. Nach "docker-compose up -d" sehe ich den Stream weder auf
http://192.xxx.xxx.xxx:8000
noch auf
https://192.xxx.xxx.xxx:9000

Da ich zwischendurch die Formatierung der docker-compose.yml verhauen habe, habe ich die Datei auf der Seite http://www.yamllint.com/ gecheckt.
Nach dem ich das wieder gerichtet habe, habe ich folgende Ausgabe erhalten, auf jeden Fall fehlerfrei....


---
services:
  webrtc-streamer:
    command:
      - "-a"
      - "-C"
      - config.json
      - "-H"
      - "8000,9000s"
      - "-c"
      - /app/ssl/server.pem
    container_name: webrtc-streamer
    image: "mpromonet/webrtc-streamer:latest"
    network_mode: host
    restart: always
    volumes:
      - "./webrtc-streamer/config.json:/app/config.json"
      - "./webrtc-streamer/ssl/:/app/ssl/"
version: "3"


Ich habe die Dateien aus dem Verzeichnis "/root/webrtc-streamer-docker-compose/webrtc-streamer/ssl/" in das Verzeichnis "/app/ssl/" kopiert.

Unter Chrome bekomme ich (egal ob http und https Zugriff) die Mitteilung:
Zitat
Die Website ist nicht erreichbar

192.xxx.xxx.xxx hat die Verbindung abgelehnt.
Benutze ich die "alte" docker-compose.yml kann ich den Stream mit http... wieder anschauen.
Edit:
Es reicht aus , wenn ich die Zeile
    command: [ "-a", "-C", "config.json", "-H", "8000,9000s", "-c", "/app/ssl/server.pem"]
gegen
    command: [ "-a", "-C", "config.json"]
tausche. Dann funktioniert der http zugriff wieder

Hast du noch einen Tipp für mich?
Güße
Michael
- Asus PN 41- mapleCul V1.24.01 - FHEMDuino - FHEM 6.2 - HUE Bridge - ESPEasy Bridge -  Milight HUB - smartVISU 3.40 -