« Présentation de la conférence OSCC 2024 « Voice WebRTC pour OpenSimulator » » : différence entre les versions
(4 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 108 : | Ligne 108 : | ||
== os-webrtc-janus == | == os-webrtc-janus == | ||
=== Sources du module === | === Sources du module === | ||
* | # '''Lien du projet sur Github''' : https://github.com/Misterblue/os-webrtc-janus | ||
# '''Actuellement, les sources du module complémentaire à intégrer dans les sources d'OpenSimulator sont''' : | |||
* '''WebRtcVoiceRegionModule''' : capacités de la voice de la région, permet aussi que la région dise qu'elle prend en charge le service vocal WebRTC. | |||
* '''WebRtcVoiceServiceModule''' : Implémente IWebRtcVoiceService | |||
** Routage des requêtes vocales, orientation des requêtes vers le bon endroit : service de grille ou service Janus local. | |||
* '''WebRtcJanusVoice''' : Connexion à Janus-gateway. En théorie, il est possible de connecter une autre solution. Si quelqu’un a son propre mixeur audio ou développe une autre solution cette partie peut être remplacée. | |||
* '''WebRtcVoiceConnector''' : Connecteur XMLRPC pour la voice WebRTC . Connecte la région au réseau. | |||
=== Configuration : bin/config/os-web-janus.ini=== | === Configuration : bin/config/os-web-janus.ini=== | ||
<pre> | |||
[WebRtcVoice] | |||
Enabled = true | |||
; Module à utiliser pour la voix spatiale WebRtcVoice | |||
SpacialVoiceService=WebRycJanusService.dll:W | |||
; Module à utiliser pour le WebRtcVoice non spécial | |||
NonSpacialVoiceService=WebRtcJanusService.dll:WebRtcJanusService | |||
;URL du service de grille qui fournit le service WebRtcVoiceService | |||
WebRtcVoiceServerURI = ${Const|PrivURL]:${Const|PrivatePort} | |||
[JanusWebRtcVoice] | |||
</pre> | |||
* 🏗️ | * 🏗️ | ||
=== os-webrtc-docker=== | === os-webrtc-docker=== | ||
* 🏗️ | * 🏗️ |
Version du 13 janvier 2025 à 15:45
Présentation de la conférence OSCC 2024 de Robert Adams connu sous le nom de Misterblue Wave dans le monde virtuel.(Source : https://youtu.be/nL78fieIFYg)
Introduction
Cette présentation concerne les développeurs et les propriétaires de simulateurs ou de grille OpenSimulator. Pour les utilisateurs, il n'y aura pas de changements dans les viewers.
Il s'agira ici de :
- donner des détails sur la mise en œuvre de la voice WebRTC par Second Life.
- décrire la voice WebRtc basée sur Janus-gateway pour OpenSimulator : os-webrtc-janus
Second Life remplace Vivox
Jusqu’à présent Second Life utilisait Vivox et Opensimulator utilisait un support « gratuit » de Vivox. Mais, suite à une mise à jour, Vivox a abandonné certaines fonctionnalités et SecondLife a décidé de le remplacer. Liden Lab a mis en place ses propres serveurs pour le chat vocal spatial et non spatiale. Une solution basée sur les protocoles WebRtc a été développée.
Ainsi, les viewers tiers devraient supporter la voice Vivox et WebRTC. Mais, beaucoup de développeurs de viewer pensent ne supporter que la voice WebRtc laissant OpenSimulator sans solution de chat vocal.
Qu'est ce que WebRtc ?
WebRTC est un ensemble de standards permettant de créer des flux audio/vidéo/de données en temps réel entre les navigateurs. Il est probablement basé sur plus de 10 standards / normes parmi lesquelles il y a :
- RTP : protocole de communication informatique permettant le transport de données soumises à des contraintes de temps réel, tels que des flux média audio ou vidéo.
- SDP: protocole de communication de description de paramètres d'initialisation d'une session de diffusion en flux.
- SIP : protocole de communication standard ouvert de gestion de sessions souvent utilisé dans les télécommunications multimédia (son, image, etc.). Il est depuis 2007 le plus courant pour la téléphonie par internet (la VoIP).
- ICE(en) : est une technique utilisée dans les réseaux informatiques pour trouver des moyens permettant à deux ordinateurs de communiquer entre eux de la manière la plus directe possible dans un réseau pair-à-pair. Cela est le plus souvent utilisé pour des médias interactifs tels que la voix sur protocole Internet (VoIP), les communications pair-à-pair, la vidéo et la messagerie instantanée.
- STUN : protocole client-serveur permettant à un client UDP situé derrière un routeur NAT (ou de multiples NAT) de découvrir son adresse IP publique ainsi que le type de routeur NAT derrière lequel il est. Ces informations sont utilisées pour échanger correctement des données UDP avec l'extérieur d'un réseau NAT.
- TURN(en) : protocole qui aide à traverser les traducteurs d'adresses réseau (NAT) ou les pare-feu pour les applications multimédias. Il peut être utilisé avec le protocole TCP et le protocole UDP. Il est particulièrement utile pour les clients sur des réseaux masqués par des dispositifs NAT symétriques.
Dans un réseau étendu
-
Acteurs
-
Service d'annuaire
-
Serveur STUN/TURN
Dans un réseau local
-
Connexion directe
Avantages de l'Utilisation d'un Mixer dans la Communication Audio
-
Connexions audio directes
-
Avec mixer
-
Avec Janus dans OpenSim
Avantages :
- Réduction de la Charge de Calcul : les viewers n'ont plus besoin de traiter chaque flux audio individuellement.
- Optimisation de la Bande Passante : en centralisant le traitement audio, le mixer peut réduire le nombre de flux audio envoyés à chaque viewer.
- Protection des données : les viewers ne voient pas les données des autres viewers.
Qu'est ce que Janus-Gateway ?
- C'est un projet open source pour les serveur WebRTC Site officiel Janus-gateway sur Github
- Il dispose d'un plugin « audio-bridge » pour les « salles de conférence ».
- Plusieurs personnes rejoignent des « salles » et entendent tout le monde.
- Il possède des fonctions de positionnement permettant le déplacement en stéréo.
Second Life et WebRtc
Les protocoles
Linden Lab a été très généreux en publiant les protocoles :
Voice WebRtc
WebRTC Voice sur Second Life, le point de vue d'un développeur
WebRTC utilisé par Second Life
- Le processus d'offre/réponse SDP[1] est utilisé pour gérer les capacités des régions dans Second Life.
- Création d'une connexion RTC (Real-Time Communication) appropriée entre le serveur de mixage et le viewer.
- L'utilisation de WebRTC dans Second Life n'est pas une version standard de la technologie. Par conséquent, il pourrait y avoir des limitations quant à la compatibilité avec d'autres services, comme Zoom[2].
- C'est une utilisation assez basique de WebRTC. Une solution pour OpenSimulator peut être construite assez facilement. WebRTC, le simulateur OpenSim et le viewer sont open-source. Il est possible d'ajouter des extensions intéressantes pour OpenSimulator pour réaliser des mixages intéressants par exemple.
La voice dans OpenSim
Deux architectures possibles pour os-webrtc-janus
-
Solution de base
-
Solution optionnelle
- Première solution : serveur de grille et serveur Janus éxécutés parallèlement. Ainsi la grille fournit un mixeur audio aux viewers .
- Deuxième solution : la région peut exécuter son propre serveur Janus et avoir son propre mixeur audio. Cela peut permettre de conserver des éléments localement pour des raisons de sécurité et ne pas dépendre du service de grille.
Prise de contact entre le viewer et le simulateur
-
Connexion à la grille
-
Connexion à la région
-
- Le viewer se connecte à la grille avec le loginURI de la grille. Il reçoit des jetons d'accès à la région sur laquelle l'utilisateur va utiliser le chat vocal.
- Le viewer se connecte à la région et récupère la liste des services et des fonctionnalités pris en charge par la région. Ainsi la fonctionnalité "voice_service" correspondant au chat vocal prend la valeur "webrtc". Avant elle renvoyait la valeur "vivox".
- Ensuite le viewer parle avec une capacité qui détermine les services de connexion de la région. Il demande de faire une offre de connexion au service de chat vocal.
- La région via les services de connexion demande au serveur Janus de configurer une salle de conférence qui sera fournie par le plugin audio-bridge. La "réponse" SDP est retournée.
- La région envoie la réponse SDP au viewer via la capacité ProvisionVoiceAccount. Cette réponse contient tous les éléments comme l'adresse réseau du serveur Janus et toutes les autres informations de connexion nécessaires, les codecs utilisés, le débit binaire, etc. .
Canal de données RTP du viewer
- Le flux généré par Liden Lab ne contient pas que de l'audio, il contient aussi des données qui inclus les informations de position. Il envoie des petits paquets d'informations au format JSON : entête et position de l'expéditeur, entête et position des auditeurs, mises en sourdine, volume.
- L'implémentation initiale de la solution proposée par MisterBlue ne contient pas ces éléments. C'est un travail qui devrait être réalisé dans le futur.
os-webrtc-janus
Sources du module
- Lien du projet sur Github : https://github.com/Misterblue/os-webrtc-janus
- Actuellement, les sources du module complémentaire à intégrer dans les sources d'OpenSimulator sont :
- WebRtcVoiceRegionModule : capacités de la voice de la région, permet aussi que la région dise qu'elle prend en charge le service vocal WebRTC.
- WebRtcVoiceServiceModule : Implémente IWebRtcVoiceService
- Routage des requêtes vocales, orientation des requêtes vers le bon endroit : service de grille ou service Janus local.
- WebRtcJanusVoice : Connexion à Janus-gateway. En théorie, il est possible de connecter une autre solution. Si quelqu’un a son propre mixeur audio ou développe une autre solution cette partie peut être remplacée.
- WebRtcVoiceConnector : Connecteur XMLRPC pour la voice WebRTC . Connecte la région au réseau.
Configuration : bin/config/os-web-janus.ini
[WebRtcVoice] Enabled = true ; Module à utiliser pour la voix spatiale WebRtcVoice SpacialVoiceService=WebRycJanusService.dll:W ; Module à utiliser pour le WebRtcVoice non spécial NonSpacialVoiceService=WebRtcJanusService.dll:WebRtcJanusService ;URL du service de grille qui fournit le service WebRtcVoiceService WebRtcVoiceServerURI = ${Const|PrivURL]:${Const|PrivatePort} [JanusWebRtcVoice]
- 🏗️
os-webrtc-docker
- 🏗️
État d'avancement d'os-webrtc-janus
- 🏗️
Contact
- 🏗️