MixedReality-WebRTC ist eine Sammlung von Bibliotheken, die Entwicklern von Mixed-Reality-Apps dabei hilft, Peer-to-Peer-Echtzeit-Audio- und Videokommunikation in ihre Anwendung zu integrieren und ihre Zusammenarbeit zu verbessern.
MixedReality-WebRTC ist Teil der Sammlung von Repositorys, die vom Mixed Reality Sharing-Team entwickelt und verwaltet werden.
MR-WebRTC ist veraltet. Wir stellen keine Entwicklungsressourcen mehr dafür bereit, nehmen keine Pull-Anfragen dafür entgegen und planen keinen Ersatz dafür.
NuGet- (C++, C#) und UPM- (Unity) Pakete sind für stabile Releases ( release/*
Zweige) verfügbar. Weitere Informationen finden Sie auf der Release-Seite auf GitHub oder auf der Seite zum Herunterladen der Dokumentation.
Hinweis : Der master
enthält möglicherweise wichtige API-Änderungen aus der neuesten stabilen Version. Daher kann nicht garantiert werden, dass es mit NuGet-Paketen funktioniert, die nur für stabile Versionen verfügbar sind. Insbesondere wird garantiert, dass die Unity-Bibliotheksskripte nur dann mit NuGet-Paketen kompatibel sind, wenn sie aus einem release/*
Zweig kopiert werden. Es wird jedoch dringend empfohlen, stattdessen die UPM-Pakete zu verwenden.
Der Zweig release/2.0
enthält die neueste stabile Version der API, von der aus die NuGet- und UPM-Pakete veröffentlicht werden.
Der master
enthält die neuesten Entwicklungen. Es wurde darauf geachtet, diesen Zweig in einem recht sauberen Zustand zu halten (Zweig kann erstellt werden, Tests bestehen). Der master
-Zweig enthält jedoch API-Breaking-Änderungen im Vergleich zur neuesten Version und ist daher nicht mit NuGet/UPM-Paketen kompatibel und sollte stattdessen aus Quellen erstellt werden (siehe Dokumentation zum Erstellen aus Quellen).
Die offizielle Dokumentation wird unter https://microsoft.github.io/MixedReality-WebRTC/ gehostet.
Das Benutzerhandbuch enthält einen allgemeinen Überblick über die verschiedenen Bibliotheken des Projekts und einige Tutorials zu deren Verwendung.
Für die C#-Bibliothek und die Unity-Integration ist eine API-Referenz verfügbar.
Die Gesamtarchitektur ist wie folgt:
Bibliothek | Lang | Beschreibung |
---|---|---|
mrwebrtc | C/C++ | Native C/C++-Bibliothek, die eine Low-Level-Schnittstelle zur zugrunde liegenden WebRTC-Implementierung von Google bereitstellt. Im Vergleich zur API, die von der Google-Implementierung ( PeerConnection ) bereitgestellt wird, ist die aktuelle Schnittstelle vereinfacht, um den Einrichtungs- und Konfigurationsaufwand zu verringern. Außerdem wird versucht, häufige Threading-Fehler bei den UWP-Wrappern zu verhindern. Diese Bibliothek stellt eine reine C-API bereit, die sich leicht in jede C/C++-Anwendung integrieren lässt. |
Microsoft.MixedReality.WebRTC | C# 7.3 | C# .Net Standard 2.0-Bibliothek, die Zugriff auf dieselbe API wie die native C-Bibliothek bietet und mit bekannten C#-Konzepten wie async / await und Task verfügbar gemacht wird. |
Microsoft.MixedReality.WebRTC.Unity | C# 7.3 | Unity3D-Integration – eine Reihe von Unity MonoBehaviour Komponenten, für die nahezu kein Setup erforderlich ist, um ein schnelles Prototyping zu ermöglichen und die Integration in eine vorhandene App zu vereinfachen. |
Microsoft.MixedReality.WebRTC.Unity.Examples | C# 7.3 | Unity3D-Beispiele zeigen typische Anwendungsszenarien wie eine Peer-to-Peer-Video-Chat-App. |
MixedReality-WebRTC ist derzeit für Windows 10 Desktop und UWP, mit oder ohne Unity, und Android (nur Unity) verfügbar.
Hinweis – Im Folgenden und an anderer Stelle in diesem Repository wird der Begriff „Win32“ als Synonym für „Windows Desktop“, die historische Windows-API für die Entwicklung von Desktop-Anwendungen, und im Gegensatz zur „Windows UWP“-API verwendet. Allerdings werden Microsoft Windows-Versionen älter als Windows 10 mit Windows SDK 17134 (April 2018 Update, 1803) für dieses Projekt nicht offiziell unterstützt. Insbesondere ältere Windows-Versionen (Windows 7, Windows 8 etc.) werden ausdrücklich nicht unterstützt.
Dieses Repository folgt dem Pitchfork-Layout, um seine Hierarchie zu standardisieren:
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
Die Microsoft.MixedReality.WebRTC.sln
Visual Studio 2019-Lösung im Stammverzeichnis des Repositorys enthält mehrere Projekte:
mrwebrtc
, die kompiliert werden kann:mrwebrtc-win32
-Projektmrwebrtc-uwp
-Projektmrwebrtc-win32-tests
Microsoft.MixedReality.WebRTC
Microsoft.MixedReality.WebRTC.Tests
Microsoft.MixedReality.WebRTC.TestAppUWP
basierend auf WPF und XAML, das die Audio-/Video-/Datenkommunikation mithilfe einer einfachen Video-Chat-App demonstriert. Hinweis – Aufgrund von CI-Einschränkungen werden derzeit einige Projekte auf VS 2017 heruntergestuft, da der Google M71-Meilenstein, auf dem die master
und release/1.0
Zweige aufbauen, VS 2019 nicht unterstützt und Azure DevOps CI-Agents nicht mehrere Visual Studio-Versionen unterstützen gleicher Agent. Dies wird irgendwann auf VS 2019 zurückgesetzt (siehe Nr. 14).
Weitere Informationen finden Sie im Benutzerhandbuchabschnitt zum Erstellen aus Quellen.
VideoRecording
oder VideoConferencing
. Dies wird automatisch in der Unity-Integrationsschicht (siehe hier) gehandhabt, wenn WebcamSrouce.FormatMode = Automatic
(Standard), muss aber manuell gehandhabt werden, wenn die C#-Bibliothek direkt verwendet wird.screenDuplication
Funktion, die von Drittanbieteranwendungen nicht abgerufen werden kann . Kurz gesagt, MRC ist für gemeinsam genutzte Apps nicht verfügbar. Dies ist eine Einschränkung des Betriebssystems.PreferredVideoCodec = "H264"
verwenden, um den auf dem Gerät vorhandenen Hardware-Encoder zu nutzen. Software-Kodierung mit z. B. VP8- oder VP9-Codecs ist sehr rechenintensiv und wird dringend empfohlen. Bei der aktuellen Version handelt es sich um eine öffentliche Vorschau, die bekannte Probleme enthält:
Microsoft.MixedReality.WebRTC.Native
enthalten einige WebRTC-Header aus dem Google-Repository, die nicht mit den NuGet-Paketen selbst ausgeliefert werden, sondern das Klonen dieses Repositorys und seiner Abhängigkeiten erfordern (siehe #123).Darüber hinaus ist bekannt, dass die Debug-Konfiguration der WebRTC-Kernimplementierung auf den meisten Geräten, einschließlich einigen High-End-PCs, einige Leistungsprobleme aufweist. Die Verwendung der Release-Konfiguration der WebRTC-Kernimplementierung verhindert dies normalerweise und wird dringend empfohlen, wenn kein Debug durchgeführt wird.
Dieses Projekt hat den Microsoft Open Source Verhaltenskodex übernommen. Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
MixedReality-WebRTC baut auf der von Google bereitgestellten WebRTC-Implementierung auf. Sicherheitsprobleme und Fehler im Zusammenhang mit dieser Implementierung sollten Google gemeldet werden.
Sicherheitsprobleme und Fehler im Zusammenhang mit MixedReality-WebRTC selbst oder dem WebRTC UWP SDK sollten privat per E-Mail an das Microsoft Security Response Center (MSRC) [email protected] gemeldet werden. Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Sollten Sie dies aus irgendeinem Grund nicht tun, kontaktieren Sie uns bitte per E-Mail, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen, einschließlich des MSRC PGP-Schlüssels, finden Sie im Security TechCenter.