MixedReality-WebRTC est un ensemble de bibliothèques destinées à aider les développeurs d'applications de réalité mixte à intégrer la communication audio et vidéo en temps réel peer-to-peer dans leur application et à améliorer leur expérience collaborative.
MixedReality-WebRTC fait partie de la collection de référentiels développés et maintenus par l'équipe Mixed Reality Sharing.
MR-WebRTC est obsolète. Nous n'y consacrons plus de ressources de développement, n'acceptons plus de demandes d'extraction ou ne prévoyons plus de remplacement.
Les packages NuGet (C++, C#) et UPM (Unity) sont disponibles pour les versions stables (branches release/*
). Consultez la page Release sur GitHub ou la page Télécharger la documentation pour plus de détails.
Remarque : La branche master
peut contenir des modifications majeures de l'API par rapport à la dernière version stable. Il n'est donc pas garanti de fonctionner avec les packages NuGet, qui ne sont disponibles que pour les versions stables. En particulier, la compatibilité des scripts de la bibliothèque Unity avec les packages NuGet n'est garantie que s'ils sont copiés à partir d'une branche release/*
, bien qu'il soit fortement recommandé d'utiliser les packages UPM à la place.
La branche release/2.0
contient la dernière version stable de l'API, à partir de laquelle les packages NuGet et UPM sont publiés.
La branche master
contient les derniers développements. Des précautions ont été prises pour maintenir cette branche dans un état assez propre (la branche peut se construire, les tests réussissent). Cependant, la branche master
contient des modifications importantes de l'API par rapport à la dernière version et n'est donc pas compatible avec les packages NuGet/UPM et doit plutôt être construite à partir des sources (voir la documentation Construction à partir des sources).
La documentation officielle est hébergée sur https://microsoft.github.io/MixedReality-WebRTC/.
Le manuel d'utilisation contient un aperçu général des différentes bibliothèques du projet et quelques tutoriels sur la façon de les utiliser.
Une référence API est disponible pour la bibliothèque C# et l'intégration Unity.
L'architecture globale est la suivante :
Bibliothèque | Lang | Description |
---|---|---|
mrwebrtc | C/C++ | Bibliothèque C/C++ native fournissant une interface de bas niveau à l'implémentation WebRTC sous-jacente de Google. Par rapport à l'API exposée par l'implémentation de Google ( PeerConnection ), l'interface actuelle est simplifiée pour supprimer la charge d'installation et de configuration. Il essaie également d'éviter les erreurs de thread courantes avec les wrappers UWP. Cette bibliothèque expose des API C pures facilement intégrées dans n'importe quelle application C/C++. |
Microsoft.MixedReality.WebRTC | C#7.3 | Bibliothèque C# .Net Standard 2.0 donnant accès à la même API que la bibliothèque C native, exposée avec des concepts C# familiers tels que async / await et Task . |
Microsoft.MixedReality.WebRTC.Unity | C#7.3 | Intégration Unity3D - un ensemble de composants Unity MonoBehaviour avec presque aucune configuration requise, pour permettre un prototypage rapide et simplifier l'intégration dans une application existante. |
Microsoft.MixedReality.WebRTC.Unity.Examples | C#7.3 | Exemples Unity3D présentant des scénarios d'utilisation typiques, comme une application de chat vidéo peer-to-peer. |
MixedReality-WebRTC est actuellement disponible pour Windows 10 Desktop et UWP, avec ou sans Unity, et Android (Unity uniquement).
Remarque - Dans ce qui suit et ailleurs dans ce référentiel, le terme « Win32 » est utilisé comme synonyme de « Windows Desktop », l'API Windows historique pour le développement d'applications de bureau, et par opposition à l'API « Windows UWP ». Cependant, les versions de Microsoft Windows antérieures à Windows 10 avec le SDK Windows 17134 (mise à jour d'avril 2018, 1803) ne sont pas officiellement prises en charge pour ce projet. En particulier, les anciennes versions de Windows (Windows 7, Windows 8, etc.) ne sont explicitement pas prises en charge.
Ce référentiel suit le Pitchfork Layout dans le but de standardiser sa hiérarchie :
bin/ # Binary outputs (generated)
build/ # Intermediate build artifacts (generated)
docs/ # Documentation sources
+ manual/ # User manual sources
examples/ # Examples of use and sample apps
external/ # Third-party external dependencies (git submodules)
libs/ # Source code for the individual libraries
tests/ # Source code for feature tests
tools/ # Utility scripts
+ build/ # Build scripts for the various platforms
+ android/ # Android Studio project to build libmrwebrtc.so
+ libwebrtc/ # Android build scripts for Google's WebRTC library
+ mrwebrtc/ # Windows build tools to build mrwebrtc.dll
+ ci/ # CI Azure pipelines
La solution Microsoft.MixedReality.WebRTC.sln
Visual Studio 2019 située à la racine du référentiel contient plusieurs projets :
mrwebrtc
, qui peut être compilée :mrwebrtc-win32
mrwebrtc-uwp
mrwebrtc-win32-tests
Microsoft.MixedReality.WebRTC
Microsoft.MixedReality.WebRTC.Tests
Microsoft.MixedReality.WebRTC.TestAppUWP
basé sur WPF et XAML qui démontre la communication audio/vidéo/données au moyen d'une simple application de chat vidéo. Remarque - Actuellement, en raison des limitations de CI, certains projets sont rétrogradés vers VS 2017, car le jalon Google M71 sur lequel les branches master
et release/1.0
s'appuient ne prend pas en charge VS 2019, et les agents Azure DevOps CI ne prennent pas en charge plusieurs versions de Visual Studio sur le même agent. Cela reviendra éventuellement à VS 2019 (voir #14).
Voir la section du manuel d'utilisation sur la construction à partir de sources.
VideoRecording
ou VideoConferencing
. Ceci est géré automatiquement dans la couche d'intégration Unity (voir ici) si WebcamSrouce.FormatMode = Automatic
(par défaut), mais doit être géré manuellement si vous utilisez directement la bibliothèque C#.screenDuplication
, qui ne peut pas être obtenue par les applications tierces . En bref, MRC n'est pas disponible pour les applications partagées. Il s'agit d'une limitation du système d'exploitation.PreferredVideoCodec = "H264"
pour utiliser l'encodeur matériel présent sur l'appareil ; L'encodage logiciel avec par exemple les codecs VP8 ou VP9 est très gourmand en CPU et fortement déconseillé. La version actuelle est une version préliminaire publique qui contient des problèmes connus :
Microsoft.MixedReality.WebRTC.Native
incluent certains en-têtes WebRTC du référentiel Google, qui ne sont livrés avec aucun des packages NuGet eux-mêmes, mais nécessitent à la place le clonage de ce référentiel et de ses dépendances. (voir #123).De plus, la configuration de débogage de l'implémentation principale de WebRTC est connue pour présenter des problèmes de performances sur la plupart des appareils, y compris certains PC haut de gamme. L’utilisation de la configuration Release de l’implémentation principale de WebRTC empêche généralement cela et est fortement recommandée en cas de non-débogage.
Ce projet a adopté le code de conduite Microsoft Open Source. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
MixedReality-WebRTC s'appuie sur l'implémentation WebRTC fournie par Google. Les problèmes de sécurité et les bugs liés à cette implémentation doivent être signalés à Google.
Les problèmes de sécurité et les bogues liés à MixedReality-WebRTC lui-même ou au SDK WebRTC UWP doivent être signalés en privé, par e-mail, au Microsoft Security Response Center (MSRC) [email protected]. Vous devriez recevoir une réponse dans les 24 heures. Si, pour une raison quelconque, vous ne le faites pas, veuillez effectuer un suivi par e-mail pour vous assurer que nous avons bien reçu votre message original. De plus amples informations, y compris la clé MSRC PGP, sont disponibles dans le Security TechCenter.