Aller au contenu

« Présentation de la conférence OSCC 2024 « Voice WebRTC pour OpenSimulator » » et « Réunion du 18-02-2025 » : différence entre les pages

De OSWiki
(Différence entre les pages)
 
 
Ligne 1 : Ligne 1 :
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)
= Changements du code de la semaine=
 
== Statistiques de base de la grille==
= Introduction =
=== Le code ===
 
* Vincent Sylvester a fourni du code pour afficher les statistiques de base de la grille : [http://opensimulator.org/mantis/view.php?id=9182 '''Mantis 9128''']
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.
* Commits :
** [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=898cc22b22b5d800d6f307fec64efb8ebd782071 '''Commit 898cc2'''] : Grid Stats dans la section GridInfoService.
** [http://opensimulator.org/viewgit/?a=commit&p=opensim&h=8ec10f9ca83385eed3f2947b44dd61514a375e7c '''Commit 8ec10f'''] : suppression de la métode statistiques de grille XMLRPC. XMLRPC est obsolète. Définition du temps de rafraîchissement à 15 minutes. Cosmétique.
** Ubit Umarov a ajouté le code à OpenSim, sans la méthode  xmlrpc. Apparemment, pour l'instant, ce code est peut-être cassé. Vincent Sylvester  pense que cela fonctionne.  Il faut tester.
=== Utilisation ===
* Statistiques fournies : les utilisateurs qui se sont connectés au cours des 30 derniers jours, le nombre de régions connectées et le nombre total de résidents.
* Commande
<pre>  curl -X GET http://localhost:80/get_grid_stats </pre>
* Réponse  de la commande :
<pre>
    <gridstats>
        <region_count>13073</region_count>
        <active_users>746</active_users>
        <residents>3950</residents>
    </gridstats>
</pre>
* L'option est activée par défaut. Ceux qui ne veulent pas partager les statistiques peuvent la désactiver dans le fichier Robust.ini dans la section GridInfoService :
  DisableStatsEndpoint = true.
* Une fois que toutes les grilles auront fait la mise à jour, il sera beaucoup plus facile de collecter des données sur le métavers.
=== Problèmes rencontrés ===
* Les régions mortes sont comptées.
* Vincent Sylvester n'a pas ajouté le nombre d'utilisateurs en ligne parce qu'il y a aussi beaucoup d'entrées mortes. Cela demanderait trop de requêtes de base de données (connexions, déconnexions, téléportations) ce qui risquerait d’inonder le réseau.
* Ce code n'a aucun moyen de détecter si une région est ouverte ou fermée.


'''Il s'agira ici de ''':
=== Alternative ===
# donner des détails sur la mise en œuvre de la voice WebRTC par Second Life.
* Certaines grilles comme OSGrid utilisent [http://opensimulator.org/wiki/OpenSim.Region.DataSnapshot/fr '''datasnapshot'''] pour faire des statistiques
# décrire la voice WebRtc basée sur Janus-gateway pour OpenSimulator : '''os-webrtc-janus'''
* Utilisation d'un code PHP qui lit les données de la table. Mais, il y a aussi des fantômes.


= Second Life remplace Vivox =
= Avertissement =
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 [[Lexique_des_réunions#WebRTC |'''WebRtc''']] a été développée.  
{{Avertissement_résumé|fond=pink |bord=red |message = Ce résumé existe pour orienter vos recherches. Des erreurs d'interprétation ne sont pas à exclure. Pour plus de précisions, veuillez vous référer aux sources ou vous adresser directement aux développeurs d'OpenSimulator en assistant aux [http://opensimulator.org/wiki/Office_hours réunions du mardi] ou  sur [http://opensimulator.org/wiki/IRC le canal IRC]. Je ne fais pas partie des développeurs, ne vous adressez pas à moi pour les joindre. Merci.😉}}
= Informations =
== Migration d'OSGrid==
* Ubit Umarov dit qu'il n'y a pas eu de perte d'assets, seuls quelques assets ont été déplacés vers d'autres disques temporaires. Il serait même possible de réparer le service d'assets sans temps d'arrêt. C'est pourquoi il continue d'envoyer des messages à Dan Banner afin qu'il change d'avis au sujet de la suppression des assets d'Osgrid. Jusqu'à ce que les disques soient supprimés, il y a de l'espoir. Il ne s'agit que de 6TB sur 86MAssets.
* L'appel à faire des IARs et des OARs a fait s'effondrer les services d'assets de la grille et, les IARs sont cassés parce qu'actuellement,  les assets ne sont pas accessibles.
* Pour obtenir un IAR il faut donner son mot de passe à un propriétaire de région. Mais on peut faire faire un IAR et changer de mot de passe juste après.


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'''.
== Second Life ==
=== Base de données===
* La base de données MySQL de SL était de 182 TB en 2010, mais Linden Lab a plus d'argent qu'OSGrid pour gérer ses centres de données.
* Et maintenant ils ont tous sur [https://fr.wikipedia.org/wiki/Amazon_Web_Services AWS].


= Qu'est ce que WebRtc ?  =
=== Client mobile===
* Second Life donne 15L$ par jour quand on se connecte avec le clien mobile. C'est l'équivalent de 0.20 USD.
* Le client mobile de Second Life a été développé par Adam Frisbu, créateur d'OpenSimulator.
* Kayaker Magic regrète le viewer Lumyia qu'il trouvait assez bien pour participer à des réunions, envoyer des messages instantanés. Il aurait aimé que ce viewer ne soit pas abandonné.


[[Lexique_des_réunions#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 :
== Pseudos des participants à la réunion ==
 
* À l'époque, il fallait choisir parmi une liste de noms ou la première lettre.  
<ul>
* Gavin Hird : Hird était le meilleur nom sur la liste de Second Life quand il a créé son compte. En vieux norrois, le Hird était le garde du roi. Mais, malheureusement, sous le règne du collaborateur nazi Vidkun Quisling, le mot a de nouveau été utilisé en Norvège dans son sens originel de «guerriers».
<li>
* Kayaker Magic voulait Mike Kayaker mais ce n'était pas autorisé. Il a inversé et il a choisi le premier nom qui commençait par M.
[https://duckduckgo.com/?t=ffab&q=RTP+protocol+&ia=web '''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. 
* Lyr Lobo : Lobo était le nom le plus court en 2005. Llyr était un métamorphe et Lyr Lobo joue souvent des druides dans World of Warcraft. Elle avait besoin que les étudiants puissent s'en souvenir et lui écrire dans le monde.  
</li>
* Cuga Rajal  : Cuga était son « nom de playa » pour le Burning Man avant qu'il ne rejoigne Second Life ou OpenSim.  
<li>
* Ubit Umarov : il était fatigué de parcourir la liste des noms, il a choisi Umarov qui était là à ce moment-.
[https://fr.wikipedia.org/wiki/Session_Description_Protocol '''SDP''']: protocole de communication de description de paramètres d'initialisation d'une session de diffusion en flux.
</li>
<li>
[https://fr.wikipedia.org/wiki/Session_Initiation_Protocol '''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).  
</li>
<li>
[https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment '''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.
</li>
<li>
[https://fr.wikipedia.org/wiki/Simple_Traversal_of_UDP_through_NATs '''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.
</li>
<li>
[https://en.wikipedia.org/wiki/Traversal_Using_Relays_around_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.
</li>
</ul>
 
= Flux entre deux navigateurs =
== Dans un réseau étendu ==
<gallery>
Fichier:WebRTC_01.jpg | Acteurs
Fichier:WebRTC_02.jpg | Service d'annuaire
Fichier:WebRTC_03.jpg | Serveur STUN/TURN
</gallery>
== Dans un réseau local ==
<gallery>
Fichier:WebRTC 04.jpg|Connexion directe
</gallery>
=Avantages de l'Utilisation d'un Mixer dans la Communication Audio=
<gallery>
Fichier:WebRTC 05.jpg | Connexions audio directes
Fichier:WebRTC 06.jpg | Avec mixer
Fichier:WebRTC 07.jpg | Avec Janus dans OpenSim
</gallery>
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''' [https://janus.conf.meetecho.com/ Site officiel] [https://github.com/meetecho/janus-gateway 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 ===
* [https://wiki.secondlife.com/wiki/WebRTC_Voice Fonctionnalités et feuille de route]
=== WebRTC Voice sur Second Life, le point de vue d'un développeur ===
* [https://webrtc-public-voice-beta.s3.us-west-2.amazonaws.com/WebRTC+on+Second+Life%2C+a+Developer's+View.pdf Description détaillé du protocole(PDF)]
==  WebRTC utilisé par Second Life==
* Le processus d'offre/réponse '''SDP'''[https://fr.wikipedia.org/wiki/Session_Description_Protocol] 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[https://fr.wikipedia.org/wiki/Zoom_Video_Communications].
* 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 ==
<gallery>
Fichier:WebRTC 08.jpg | Solution de base
Fichier:WebRTC 09.jpg | Solution optionnelle
</gallery>
* '''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==
<gallery>
Fichier:WebRTC_10.jpg | Connexion à la grille
Fichier:WebRTC_11.jpg | Connexion à la région
Fichier:WebRTC_12.jpg |
Fichier:WebRTC_13.jpg
  Fichier:WebRTC_14.jpg
</gallery>
 
# '''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 o'''ffre 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===
<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===
= Source=
* 🏗️
http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2025-02-18
===État d'avancement d'os-webrtc-janus===
* 🏗️
=== Contact===
* 🏗️

Version du 23 février 2025 à 10:07

Changements du code de la semaine

Statistiques de base de la grille

Le code

  • Vincent Sylvester a fourni du code pour afficher les statistiques de base de la grille : Mantis 9128
  • Commits :
    • Commit 898cc2 : Grid Stats dans la section GridInfoService.
    • Commit 8ec10f : suppression de la métode statistiques de grille XMLRPC. XMLRPC est obsolète. Définition du temps de rafraîchissement à 15 minutes. Cosmétique.
    • Ubit Umarov a ajouté le code à OpenSim, sans la méthode xmlrpc. Apparemment, pour l'instant, ce code est peut-être cassé. Vincent Sylvester pense que cela fonctionne. Il faut tester.

Utilisation

  • Statistiques fournies : les utilisateurs qui se sont connectés au cours des 30 derniers jours, le nombre de régions connectées et le nombre total de résidents.
  • Commande
  curl -X GET http://localhost:80/get_grid_stats 
  • Réponse de la commande :
 
     <gridstats>
        <region_count>13073</region_count>
        <active_users>746</active_users>
        <residents>3950</residents>
     </gridstats>
  • L'option est activée par défaut. Ceux qui ne veulent pas partager les statistiques peuvent la désactiver dans le fichier Robust.ini dans la section GridInfoService :
 DisableStatsEndpoint = true.
  • Une fois que toutes les grilles auront fait la mise à jour, il sera beaucoup plus facile de collecter des données sur le métavers.

Problèmes rencontrés

  • Les régions mortes sont comptées.
  • Vincent Sylvester n'a pas ajouté le nombre d'utilisateurs en ligne parce qu'il y a aussi beaucoup d'entrées mortes. Cela demanderait trop de requêtes de base de données (connexions, déconnexions, téléportations) ce qui risquerait d’inonder le réseau.
  • Ce code n'a aucun moyen de détecter si une région est ouverte ou fermée.

Alternative

  • Certaines grilles comme OSGrid utilisent datasnapshot pour faire des statistiques
  • Utilisation d'un code PHP qui lit les données de la table. Mais, il y a aussi des fantômes.

Avertissement

Attention : Ce résumé existe pour orienter vos recherches. Des erreurs d'interprétation ne sont pas à exclure. Pour plus de précisions, veuillez vous référer aux sources ou vous adresser directement aux développeurs d'OpenSimulator en assistant aux réunions du mardi ou sur le canal IRC. Je ne fais pas partie des développeurs, ne vous adressez pas à moi pour les joindre. Merci.😉


Informations

Migration d'OSGrid

  • Ubit Umarov dit qu'il n'y a pas eu de perte d'assets, seuls quelques assets ont été déplacés vers d'autres disques temporaires. Il serait même possible de réparer le service d'assets sans temps d'arrêt. C'est pourquoi il continue d'envoyer des messages à Dan Banner afin qu'il change d'avis au sujet de la suppression des assets d'Osgrid. Jusqu'à ce que les disques soient supprimés, il y a de l'espoir. Il ne s'agit que de 6TB sur 86MAssets.
  • L'appel à faire des IARs et des OARs a fait s'effondrer les services d'assets de la grille et, les IARs sont cassés parce qu'actuellement, les assets ne sont pas accessibles.
  • Pour obtenir un IAR il faut donner son mot de passe à un propriétaire de région. Mais on peut faire faire un IAR et changer de mot de passe juste après.

Second Life

Base de données

  • La base de données MySQL de SL était de 182 TB en 2010, mais Linden Lab a plus d'argent qu'OSGrid pour gérer ses centres de données.
  • Et maintenant ils ont tous sur AWS.

Client mobile

  • Second Life donne 15L$ par jour quand on se connecte avec le clien mobile. C'est l'équivalent de 0.20 USD.
  • Le client mobile de Second Life a été développé par Adam Frisbu, créateur d'OpenSimulator.
  • Kayaker Magic regrète le viewer Lumyia qu'il trouvait assez bien pour participer à des réunions, envoyer des messages instantanés. Il aurait aimé que ce viewer ne soit pas abandonné.

Pseudos des participants à la réunion

  • À l'époque, il fallait choisir parmi une liste de noms ou la première lettre.
  • Gavin Hird : Hird était le meilleur nom sur la liste de Second Life quand il a créé son compte. En vieux norrois, le Hird était le garde du roi. Mais, malheureusement, sous le règne du collaborateur nazi Vidkun Quisling, le mot a de nouveau été utilisé en Norvège dans son sens originel de «guerriers».
  • Kayaker Magic voulait Mike Kayaker mais ce n'était pas autorisé. Il a inversé et il a choisi le premier nom qui commençait par M.
  • Lyr Lobo  : Lobo était le nom le plus court en 2005. Llyr était un métamorphe et Lyr Lobo joue souvent des druides dans World of Warcraft. Elle avait besoin que les étudiants puissent s'en souvenir et lui écrire dans le monde.
  • Cuga Rajal  : Cuga était son « nom de playa » pour le Burning Man avant qu'il ne rejoigne Second Life ou OpenSim.
  • Ubit Umarov : il était fatigué de parcourir la liste des noms, il a choisi Umarov qui était là à ce moment-là.

Source

http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2025-02-18