Aller au contenu

« Présentation de la conférence OSCC 2024 « Voice WebRTC pour OpenSimulator » » : différence entre les versions

De OSWiki
(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===
*[WebRtcVoice]
<pre>
* 🏗️
[WebRtcVoice]
*[JanusWebRtcVoice]
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 :

  1.  donner des détails sur la mise en œuvre de la voice WebRTC par Second Life.
  2. 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.

Flux entre deux navigateurs

Dans un réseau étendu

Dans un réseau local

Avantages de l'Utilisation d'un Mixer dans la Communication Audio

Avantages :

  1. Réduction de la Charge de Calcul : les viewers n'ont plus besoin de traiter chaque flux audio individuellement.
  2. Optimisation de la Bande Passante : en centralisant le traitement audio, le mixer peut réduire le nombre de flux audio envoyés à chaque viewer.
  3. 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

  • 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

  1. 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.
  2. 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".
  3. 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.
  4. 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.
  5. 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

  1. Lien du projet sur Github : https://github.com/Misterblue/os-webrtc-janus
  2. 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

  • 🏗️