MixedReality-WebRTC

作者:追风剑情 发布于:2022-10-18 11:03 分类:Unity3d

获取Hololens摄像机画面数据流
HoloLensCameraStream for Unity
Hololens远程视频通话与AR标注

MixedReality WebRTC 是一个库集合,用于帮助混合现实应用程序开发人员将点对点实时音频和视频通信集成到其应用程序中,并改善其协作体验。

支持与远程端进行多轨实时音频/视频/数据通信
提供抽象的信令接口,以方便实现
通过公开的C++与C# API来集成到现有的应用程序中
为快速原型制作和集成提供一组Unity3D组件
包括对Microsoft HoloLens(x86)和Microsoft HoloLons 2(ARM)的支持
允许轻松使用混合现实捕获(MRC)以流式传输方式,实现多设备体验

MixedReality WebRTC是混合现实共享团队开发和维护的存储库集合的一部分。

注意   MR WebRTC已被弃用。我们不再向它投入开发资源,不再接受拉取请求,也不再计划替换它。
● 如果您想继续更新它,您必须派生并维护自己的分支。

下载

NuGet(C++,C#)和UPM(Unity)包可用于稳定版本(release/*分支)。有关详细信息,请参阅GitHub上的发布页面下载文档页面

注意   主分支可能包含最新稳定版本中的中断API更改。因此,它不能保证与NuGet包一起工作,NuGet仅适用于稳定版本。特别是,如果从release/*分支复制,Unity库脚本只能保证与NuGet包兼容,但强烈建议改用UPM包

[GitHub] 下载 MixedReality-WebRTC releases
[GitHub] 下载 com.microsoft.mixedreality.webrtc-2.0.2.tgz
[GitHub] 下载 com.microsoft.mixedreality.webrtc.samples-2.0.2.tgz
[Azure] 下载 MixedReality-Unity-Packages
[Azure] 下载 com.microsoft.mixedreality.webrtc-2.0.2.tgz
[Azure] 下载 com.microsoft.mixedreality.webrtc.samples-2.0.2.tgz

分支

release/2.0分支 包含API的最新稳定版本,NuGet和UPM包就是从该API发布的。

主分支包含最新发展。我们已经注意保持这个分支处于一个相当干净的状态(分支可以构建,测试通过)。但是,与最新版本相比,主分支包含破坏API的更改,因此与NuGet/UPM包不兼容,应改为从源代码构建(请参阅从源代码生成文档)。

文档

官方文档
Getting started
https://microsoft.github.io/MixedReality-WebRTC/
MixedReality-WebRTC documentation (v2.0)

用户手册

《用户手册》包含项目各种库的概述,以及如何使用它们的一些教程。

Hello,Unity world!教程通过构建一个简单的音频和视频聊天客户端来介绍Unity集成。
C#教程介绍了.NET Standard 2.0 C#API,它可以在Unity之外使用
 ○ Hello,C# world!(桌面)演示如何在.NET Core 3.0中构建一个简单的控制台应用程序,该应用程序作为Windows桌面(Win32)应用程序运行。
 ○ Hello,C# world!(UWP)展示了如何使用基于WPF(XAML)的UI构建GUI应用程序,包括如何呈现本地和远程视频。

API 参考

C#库和Unity集成有一个API参考

C# library API reference
Unity integration reference

概述

总体架构如下:

11111111111.png

库介绍
语言 描述
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 / awaitTask
Microsoft.MixedReality.WebRTC.Unity C# 7.3 Unity3D集成-一组几乎不需要设置的Unity MonoBehaviour组件,用于实现快速原型制作并简化与现有应用程序的集成。
Microsoft.MixedReality.WebRTC.Unity.Examples C# 7.3 Unity3D示例显示了典型的使用场景,如点对点视频聊天应用程序。

MixedReality WebRTC目前可用于Windows 10 Desktop和UWP,有或没有Unity,以及Android(仅Unity)。

注意-在以下以及本存储库中的其他地方,术语“Win32”被用作“Windows桌面”的同义词,即桌面应用程序开发的历史Windows API,与“Windows UWP”API相对。但是,此项目不正式支持早于Windows 10且带有Windows SDK 17134(2018年4月更新,1803)的Microsoft Windows版本。特别是,不支持旧版本的Windows(Windows 7、Windows 8等)。

来源

此存储库遵循 Pitchfork Layout,试图标准化其层次结构:

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解决方案) 位于存储库根目录包含多个项目:

  • native C/C++ library mrwebrtc,可以编译:
    • for Windows Desktop with the mrwebrtc-win32 project
    • for UWP with the mrwebrtc-uwp project
  • A C/C++ library unit tests project mrwebrtc-win32-tests
  • The C# library project Microsoft.MixedReality.WebRTC
  • A C# unit tests project Microsoft.MixedReality.WebRTC.Tests
  • 一个 UWP C# 示例应用程序项目 Microsoft.MixedReality.WebRTC.TestAppUWP。基于WPF和XAML的一个简单的视频聊天应用程序演示音频/视频/数据通信。

注意-目前由于CI限制,一些项目降级为VS 2017,因为 masterrelease/1.0 分支所基于的Google M71里程碑不支持VS 2019,并且Azure DevOps CI代理不支持同一代理上的多个Visual Studio版本。最终将恢复为VS 2019(见#14)。

构建 MixedReality-WebRTC

请参阅用户手册中的 Building from sources 部分。

Hololens 2 的特殊注意事项

  • Mixed Reality Capture(MRC)有一些固有的限制:
    • MRC最多只能工作1080p(请参阅 Mixed reality capture for developers 文档 ),但HoloLens 2上网络摄像头的默认分辨率为2272 x 1278(请参阅 Locatable Camera 文档)。为了访问不同的分辨率,需要使用不同的视频配置文件(video profile),如视频录制(VideoRecording)或视频会议(VideoConferencing)。如果 WebcamSrouce.FormatMode=Automatic (default),这将在Unity集成层(参见此处)中自动处理。但如果直接使用C#库,则必须手动处理。
    • MRC需要特殊权限才能记录屏幕内容:
      • 对于共享应用程序(2D slates),这对应于 screenDuplication 受限功能(restricted capability),第三方应用程序无法获得该功能。简而言之,MRC不适用于共享应用程序。这是操作系统限制。
      • 对于独占模式应用程序(全屏),没有特定的UWP功能,但录制的内容仅限于应用程序自己的内容。
  • 确保使用 PreferredVideoCodec=“H264” 以利用设备上的硬件编码器;使用例如VP8或VP9编解码器的软件编码非常占用CPU,强烈建议不要使用。

已知问题

当前版本是包含已知问题的公共预览:

  • 默认情况下,WebRTC UWP实现以独占模式访问系统上的视频捕获设备(video capture)。如果另一个应用程序正在使用该设备,这将在启用视频捕获时导致错误。
  • WebRTC m71/WebRTC UWP SDK 不支持 ARM64内部版本(ARM64 build)
  • WebRTC m71/WebRTC UWP SDK 不支持 H.265
  • 由于WebRTC UWP SDK在ARM上缺少对SIMD加速YUV转换的支持(#157),HoloLens 2表现出一些较小的性能损失。
  • H.264硬件视频编码(仅限UWP)显示出一些质量下降(blockiness)。详情见#74和#153。
  • H.264目前在桌面上根本不可用(甚至在软件中)。只有VP8和VP9可用(软件编码/解码)。
  • C++ library Microsoft.MixedReality.WebRTC.Native 的 NuGet packages(v1.x)包含来自Google存储库的一些WebRTC头文件,这些头文件不随任何NuGet软件包一起提供,而是需要克隆此存储库及其依赖项(请参阅#123)。

另外,WebRTC核心实现的调试配置在大多数设备上都会出现一些性能问题,包括一些高端PC。使用WebRTC核心实现的发布配置通常可以防止这种情况,在不调试时强烈建议使用此配置。

Microsoft开源行为准则

该项目采用了微软开源行为准则(Microsoft Open Source Code of Conduct)。有关更多信息,请参阅行为准则常见问题(Code of Conduct FAQ)解答或联系opencode@microsoft.com有任何其他问题或评论。

报告安全问题和漏洞

MixedReality-WebRTC基于Google提供的WebRTC实现。与此实现相关的安全问题和错误应报告给谷歌。

与MixedReality-WebRTC本身或WebRTC UWP SDK相关的安全问题和错误应通过电子邮件私下报告给Microsoft安全响应中心(MSRC)secure@microsoft.com。您应该在24小时内收到回复。如果由于某些原因您没有收到,请通过电子邮件跟进,以确保我们收到您的原始消息。更多信息,包括MSRC PGP密钥,可在Security TechCenter中找到。

Unity安装MixedReality-WebRTC

【Window】->【Package Manager】->点击“+”号->选择Add package from tarball...->找到下载好的*.tgz包

33333.png

找到下载好的 tgz 包

44444.png

安装完成后,可在 In Project 选项下查看

55555.png

222222.png

安装node-dss服务器

测试 (PC与笔记本联合测试)

111.png

去掉SDP消息里的urn:3gpp:video-orientation,可让WebRTC底层帮我们处理视频旋转问题。
参考 WebRTC 移动端的视频画面旋转问题

更多参考资料
WebRTC中文官网
[GitHub] WebRTC-UWP
[Nuget] WebRTC-UWP
ORTC Lib
WebRTC-universal-samples
ChatterBox-Sample
[Unity插件] 3D WebView
[GitHub] UnityRenderStreaming
[Unity插件] Holo Video Chat
[GitHub] WebRTC流媒体服务器(coturn)

标签: Unity3d

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号