Frage zu WebRTC

Hallo Zusammen,

ich habe eine Frage zu WebRTC. Ich betriebe eine HomeAssisant Installation auf einen Odroid.
Ich habe im Netzwerk eine RTSP Kamera laufen. Diese habe ich per RSTP in HA eingebunden. Leider habe ich dort ein Delay drin. Da ich die Kamera als Babyfon nutze, ist das natürlich nicht optimal. Nun gibt es für HA ein WebRTC Plugin womit man die Kamera delayfrei einbinden kann. Allerdings sehe ich nun im Pi-Hole, dass dieses Plugin eine Verb. zu stun.google.com aufbaut.

Meine Frage ist daher: Kann Google nun auch sehen, wie mein Sohn schläft?
Ich verstehe WebRTC ehrlich gesagt nicht so ganz. Irgendwie komisch dass ich den Stream einmal ins Netz schicken muss, um ihn lokal delayfrei schauen zu können.

Falls das wichtig ist: Der Odroid ist nur lokal erreichbar.

Ändert sich das durch WebRTC?

Ich hoffe ihr könnt mir etwas helfen.

Lg

Google kann Deinen Sohn nicht sehen. Der stun server ist so eine Art Vermittlungsstelle zum Aufbau der Verbindung https://de.wikipedia.org/wiki/Session_Traversal_Utilities_for_NAT. Die Verbindung an sich kann Google natürlich schon sehen, WebRTC gilt generell als Verbindungsdatenleak. Darüber hinaus hängt die Sicherheit von der WebRTC-Implementation in der verwendeten Anwendung ab. Natürlich kann es auch mal einen bug im Protokoll geben, das ist dann aber schon eine größere Nachricht.

Es sollte möglich sein, einen anderen stun server einzutragen. Interessant wäre auch, woran das delay liegt. Mit den Details bei HomeAssistant kenne ich mich allerdings nicht aus.

Sofern du von zuhause deinen stream abrufst, schickst du deinen stream wie zuvor nicht außerhalb deines Netzwerks. Die Übertragung von Home Assistant (mit Plugin) zum Client läuft nur anders ab als zuvor.

Was passiert wenn du den RTSP stream bspw. Mit VLC direkt von der Kamera abgreifst?

Delay ist weg, oder?

Momentan kann ich noch nicht erkennen, wozu in deinem Fall ein stun server überhaupt notwendig wäre.

Hey, ich schicke den livestream per ffmpeg und video4linux2-Treiber von einem Raspberry Pi 3.

Für die richtigen Streamingeinstellungen kann man Tage verbringen…

Teste doch mal die Latenz auf einem Laptop:

Ich konnte die Latenz bei einem Android-Phone nicht unter 2 sek drücken. Am Laptop per „ffplay -fflags nobuffer rtmp://192.168.178.60/live/stream“ quasi ohne Latenz.

Mein Setup:
folgender Befehl wird per systemd gestartet:

ffmpeg -f v4l2 -r 25 -s 160x120 -thread_queue_size 128 -i /dev/video0 -f alsa -thread_queue_size 128 -i sysdefault:CARD=„name“ -c:a aac -b:a 64k -ar 44100 -ac 1 -preset ultrafast -tune zerolatency -vf „drawtext=fontfile=/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf: text=‚Baby Cam 01 %{localtime:%Y-%m-%d %T}‘: fontcolor=white@0.8: fontsize=8: x=10: y=10: box=1: boxcolor=black: boxborderw=6“ -f flv rtmp://localhost/live/stream

der stream wird dann im lokalen Nrtzwerk per nginx verteilt.

per VLC auf einem Android oder Iphone: „rtmp://192.168.178.60/live/stream“

Kommt darauf an, ob sich hinter stun.google.com auch ein TURN-Server verbirgt und dieser von den WebRTC-Endpunkten ausgewählt wird.

Meines Wissens liegt dahinter aber nur ein STUN-Server, und darüber läuft keine (Echtzeit-)Datenverbindung.

Wenn z.B. Firefox ein WebRTC-Endpunkt ist, dann sehe ich mit about:webrtc die Liste der möglichen und tatsächlich ausgwählten Verbindung(en). Wie das bei Dir im HA aussieht, kann ich nicht sagen. Welche konkrete Rolle darin das „WebRTC-Plugin“ spielt, ebenfalls nicht. WebRTC ist ein Sammelsurium an Protokollen, Software-Spezifikationen und Definitionen zusätzlicher Server, um zwischen WebRTC-Endpunkten Datenverbindungen zu ermöglichen. Will sagen, der Begriff wird inflationär verwendet.

Bei Nextcloud-Talk kann ich z.B. auf dem Nextcloud-Server die STUN- und TURN-Server konfigurieren. Im Firefox kann ich zusätzlich auch STUN-Server angeben, und auch ob TURN-Server verwendet werden sollen oder nicht.

Vielleicht gibt es ähnliche Möglichkeiten auch bei Dir.

Das gilt nur bei TURN-Servern, nicht bei STUN-Servern. Der STUN-Server sieht nur, dass ich möglicherweise eine Verbindung irgendwohin öffnen möchte.

Das liegt dann aber an privacy-unfreundlich konfigurierten WebRTC-Endpunkten und was sie von sich selbst preisgeben.

Damit meinte ich, dass Google die Meta-Daten sieht, dh. die Verbindungsanfrage mit den IPs der Endpunkte. Ich kann mir nicht vorstellen, wie ein stun server ohne diese Daten funktionieren soll.

Tatsächlich sieht er nur die IP Adresse eines der beiden Endpunkte. Der andere Endpunkt kann einen beliebigen anderen STUN-Server verwenden. Und selbst, wenn er denselben verwendet, gibt es keine explizite Information, dass die beiden Anfragen zusammenhängen.

STUN mit seinen Servern dient nur dazu, dass ein Endpunkt selbst erfährt, unter welcher öffentlichen IP er erreichbar ist. Und dass dabei (quasi als praktischer Nebeneffekt) in nicht-symmetrische NATs Löcher geschlagen werden. Ihre jeweiligen IP Adressen (und mögliche Ports) tauschen die Endpunkte direkt über den Signalisierungskanal aus (SIP-Server bei SIP, Nextcloud-Server bei NC-Talk, …)

Hallo Zusammen,

ich hab jetzt mal bissl was probiert, aber es ist tatsächlich so, dass ich über RTSP nicht unter 2-3 Sek. Delay komme. Danke auf jeden Fall für die Erklärungen bzgl WebRTC.
Ich habe jetzt im Plugin die Möglichkeit gefunden, dass Protkoll auf MSE zu ändern, somit gehen auch keine Anfragen mehr an google raus. Zumindest sehe ich nun keine mehr im Pi-Hole.

Muss aber zugeben, dass ich die Technik hinter WebRTC trotzdem nicht ganz verstehe :smiley:

Die waren auch zuvor, für mein Verständnis, unnötig.

Das heißt alle Endpunkte sind in deinem Netzwerk bekannt. Ein STUN Server somit überflüssig.

Dabei bleibe ich vorerst bei

Meine Frage oben hast du leider auch nicht beantwortet.