webRTC-Videokonferenz in einer Box (C-Monolith)
tiny-webrtc-gw: ein in C/C++ geschriebener webRTC-Konferenzserver-„Monolith“.
Willkommen zur Tiny-webrtc-gw-Readme-Datei!
Ziele
- Streams mit unbegrenzter ⌚ Dauer (Sicherheit? freundlich)
- Privatzimmer
- 1-Klick-Join-Links
- VP8,VP9,H.264
- Sehr schnelles Stream-Multiplexing über leichtes C
- KEINE Cloud oder externer STUN/TURN beteiligt, also: Raspberry-Pi + Airgap-LAN
- SD/HD-Bitraten
- Hohe Leistung: ~68 Mbit/s pro Stream+Thread auf einem 800 MHz ARM7
- freundliche UX im Chatroom-Stil (z. B. justin.tv)
Merkmale
- 1-Many-Streaming mit sehr geringer Latenz
- Unterstützung für HD-Stream (über Medienbeschränkungen).
- Text-Chatroom
- hoch skalierbar (nativer C/C++-Code)
- Ende-zu-Ende verschlüsselt
- Unterstützung für Chrome/Firefox/Opera/Safari (iOS).
- einfache Kompilierung (einfach git checkout --recursive und „make all“)
- Mediengeräte auswählen
- Der Code enthält ein Submodul, das auf den eigenständigen HTTPS-Server und ein Beispielzertifikat verweist
- Funktioniert direkt mit OBS über WHIP
Demo:
?Chat-Lobby auf einem Raspi4; ☝WHIP-URL (für OBS)
Bilder:
Vorbehalte:
Da Browser die Aushandlung von webRTC unverschlüsselt (https) nicht zulassen, müssen Sie ein SSL-Frontend vor dem integrierten http-Server ausführen (siehe config.txt für diesen Port). Es gibt viele bessere integrierte Funktionen, die ich jedoch verwende ein Tool, das ich als Proxy geschrieben habe [https://github.com/justinb01981/SSLTools] (vielleicht verwenden Sie vorerst einfach ein (kostenloses) selbstsigniertes Zertifikat, das von openssl(2) generiert wurde, und importieren Sie es in der Browser/OS-Zertifikat-Truststore des Konferenzteilnehmers)
Gebäude:
Zum Erstellen ist „go“ erforderlich, um „boringssl“ zu kompilieren (also diese Pakete zu installieren). Führen Sie einfach „make all“ aus dem Basisverzeichnis aus.
Usw:
- 8/15 – KEINE Host-Einrichtung erforderlich (außer der Bereitstellung von Ports) – dies ist mit dem neuen stun_client.c-Code möglich – aber in Airgap-Netzwerken ist config.txt die richtige Wahl.
- 14.09. – OBS-direct (kein Browser) Streaming-Unterstützung kommt – siehe https://webrtchacks.com/webrtc-cracks-the-whip-on-obs/
- Erstellen einer Freigabe-URL:
<your_https_prefix>/content/index_broadcast.html?joinroom=<roomname>&camera=0
--- zB https://tinyurl.com/jbhatestypingthis
(drops a user in "lobby" with camera disabled)