Vidéoconférence webRTC dans une boîte (monolithe C)
tiny-webrtc-gw : un serveur de conférence webRTC "monolithe" écrit en C/C++
Bienvenue dans le fichier readme de tiny-webrtc-gw !
Objectifs
- Flux de durée infinie ⌚ (sécurité ? convivial)
- chambres privées
- Liens de participation en 1 clic
- VP8,VP9,H.264
- multiplexage de flux très rapide via C léger
- AUCUN cloud ou STUN/TURN externe impliqué, ergo : raspberry-pi + LAN à espacement aérien
- Débits SD/HD
- Hautes performances : ~68 Mbit/s par flux+thread sur un ARM7 800 MHz
- UX convivial de style salon de discussion (par exemple justin.tv)
Caractéristiques
- Latence très faible 1-plusieurs streaming
- Prise en charge du flux HD (via des contraintes multimédias)
- salle de discussion textuelle
- hautement évolutif (code natif c/c++)
- chiffré de bout en bout
- prise en charge de Chrome/Firefox/Opera/Safari (iOS)
- compilation facile (il suffit de git checkout --recursive et "make all")
- sélectionner des appareils multimédias
- le code inclut un sous-module référençant le serveur HTTPS autonome + un exemple de certificat
- Fonctionne directement avec OBS via WHIP
Démo :
?Lobby de discussion sur un raspi4 ; ☝URL WHIP (pour OBS)
Photos:
Mises en garde :
étant donné que les navigateurs ne permettent pas de négocier webRTC non chiffré (https), vous devrez exécuter une interface SSL devant le serveur http intégré (voir config.txt pour ce port), de nombreux meilleurs intégrés existent mais j'utilise un outil que j'ai écrit en tant que proxy [https://github.com/justinb01981/SSLTools] (peut-être simplement utiliser un certificat auto-signé (gratuit) généré par openssl(2) pour l'instant et l'importer dans le magasin de confiance du navigateur/certificat du système d'exploitation de la conférence)
Bâtiment:
la construction nécessite 'go' pour compiler boressl (donc installez ces packages) à partir du répertoire de base, exécutez simplement 'make all'.
Etc:
- 15/08 - AUCUNE configuration d'hôte nécessaire (au-delà de rendre les ports accessibles) - cela est possible avec le nouveau code stun_client.c - mais dans les réseaux à air isolé, config.txt est la voie à suivre.
- 14/09 - Prise en charge du streaming OBS-direct (sans navigateur) à venir - voir https://webrtchacks.com/webrtc-cracks-the-whip-on-obs/
- construction d'une URL de partage :
<your_https_prefix>/content/index_broadcast.html?joinroom=<roomname>&camera=0
--- par exemple https://tinyurl.com/jbhatestypingthis
(drops a user in "lobby" with camera disabled)