MixedReality-WebRTC 是一个库集合,可帮助混合现实应用程序开发人员将点对点实时音频和视频通信集成到他们的应用程序中并改善他们的协作体验。
MixedReality-WebRTC 是混合现实共享团队开发和维护的存储库集合的一部分。
MR-WebRTC 已被弃用。我们不再向它投入开发资源、接受拉取请求或计划替代它。
NuGet(C++、C#)和 UPM (Unity) 软件包可用于稳定版本( release/*
分支)。有关详细信息,请参阅 GitHub 上的发布页面或下载文档页面。
注意: master
分支可能包含最新稳定版本中的重大 API 更改。因此,不能保证它可以与 NuGet 包一起使用,因为 NuGet 包仅适用于稳定版本。特别是,如果从release/*
分支复制,Unity库脚本只能保证与NuGet包兼容,但强烈建议使用UPM包。
release/2.0
分支包含 API 的最新稳定版本,从中发布 NuGet 和 UPM 包。
master
分支包含最新的开发成果。我们已小心地保持该分支处于相当干净的状态(分支可以构建,测试通过)。然而,与最新版本相比, master
分支包含 API 重大更改,因此与 NuGet/UPM 包不兼容,应从源代码构建(请参阅从源代码构建文档)。
官方文档托管在 https://microsoft.github.io/MixedReality-WebRTC/。
用户手册包含项目各个库的总体概述以及一些有关如何使用它们的教程。
提供了适用于 C# 库和 Unity 集成的 API 参考。
整体架构如下:
图书馆 | 郎 | 描述 |
---|---|---|
mrwebrtc | C/C++ | 本机 C/C++ 库为 Google 的底层 WebRTC 实现提供低级接口。与 Google 实现 ( PeerConnection ) 公开的 API 相比,当前的接口经过简化,消除了设置和配置的负担。它还尝试防止 UWP 包装器出现常见线程错误。该库公开了纯 C API,可以轻松集成到任何 C/C++ 应用程序中。 |
Microsoft.MixedReality.WebRTC | C#7.3 | C# .Net Standard 2.0 库提供对与本机 C 库相同的 API 的访问,并公开了熟悉的 C# 概念,例如async / await 和Task 。 |
Microsoft.MixedReality.WebRTC.Unity | C#7.3 | Unity3D 集成 - 一组几乎无需设置的 Unity MonoBehaviour 组件,可实现快速原型设计并简化与现有应用程序的集成。 |
Microsoft.MixedReality.WebRTC.Unity.Examples | C#7.3 | Unity3D 示例展示了点对点视频聊天应用程序等典型使用场景。 |
MixedReality-WebRTC 目前可用于 Windows 10 桌面和 UWP(无论是否带有 Unity)以及 Android(仅限 Unity)。
注意- 在此存储库的以下内容和其他位置中,术语“Win32”用作“Windows 桌面”(用于桌面应用程序开发的历史 Windows API)的同义词,与“Windows UWP”API 相对。但是,此项目不正式支持早于带有 Windows SDK 17134(2018 年 4 月更新,1803)的 Windows 10 的 Microsoft Windows 版本。特别是,明确不支持旧版本的 Windows(Windows 7、Windows 8 等)。
该存储库遵循 Pitchfork 布局,试图标准化其层次结构:
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
位于存储库根目录的Microsoft.MixedReality.WebRTC.sln
Visual Studio 2019 解决方案包含多个项目:
mrwebrtc
,可以编译:mrwebrtc-win32
项目的 Windows 桌面mrwebrtc-uwp
项目的 UWPmrwebrtc-win32-tests
Microsoft.MixedReality.WebRTC
Microsoft.MixedReality.WebRTC.Tests
Microsoft.MixedReality.WebRTC.TestAppUWP
,它通过简单的视频聊天应用程序演示音频/视频/数据通信。注意- 目前,由于 CI 限制,一些项目已降级到 VS 2017,因为master
和release/1.0
分支构建的 Google M71 里程碑不支持 VS 2019,并且 Azure DevOps CI 代理不支持多个 Visual Studio 版本同一个代理。这最终将恢复到 VS 2019(参见#14)。
请参阅用户手册中有关从源代码构建的部分。
VideoRecording
或VideoConferencing
。如果WebcamSrouce.FormatMode = Automatic
(默认),则会在 Unity 集成层中自动处理(请参阅此处),但如果直接使用 C# 库,则必须手动处理。screenDuplication
受限能力,第三方应用程序无法获取该能力。简而言之,MRC 不适用于共享应用程序。这是操作系统的限制。PreferredVideoCodec = "H264"
来利用设备上存在的硬件编码器;使用 VP8 或 VP9 编解码器等软件编码非常消耗 CPU 资源,强烈建议不要这样做。 当前版本是公共预览版,包含已知问题:
Microsoft.MixedReality.WebRTC.Native
的 NuGet 包 (v1.x) 包含来自 Google 存储库的一些 WebRTC 标头,这些标头不随任何 NuGet 包本身一起提供,而是需要克隆此存储库及其依赖项(参见#123)。此外,众所周知,WebRTC 核心实现的调试配置在大多数设备(包括一些高端 PC)上都会出现一些性能问题。使用核心 WebRTC 实现的 Release 配置通常可以防止这种情况,并且强烈建议在不调试时使用。
该项目采用了微软开源行为准则。有关详细信息,请参阅行为准则常见问题解答或联系 [email protected] 提出任何其他问题或意见。
MixedReality-WebRTC 基于 Google 提供的 WebRTC 实现构建。与此实施相关的安全问题和错误应报告给 Google。
与 MixedReality-WebRTC 本身或 WebRTC UWP SDK 相关的安全问题和错误应通过电子邮件私下报告给 Microsoft 安全响应中心 (MSRC) [email protected]。您应该会在 24 小时内收到回复。如果由于某种原因您没有这样做,请通过电子邮件跟进,以确保我们收到您的原始消息。可以在安全技术中心找到更多信息,包括 MSRC PGP 密钥。