MixedReality-WebRTC — это набор библиотек, помогающий разработчикам приложений смешанной реальности интегрировать одноранговую аудио- и видеосвязь в реальном времени в свои приложения и улучшить возможности совместной работы.
MixedReality-WebRTC — часть коллекции репозиториев, разработанных и поддерживаемых командой Mixed Reality Sharing.
MR-WebRTC устарел. Мы больше не выделяем на него ресурсы для разработки, не принимаем запросы на включение и не планируем его замену.
Пакеты NuGet (C++, C#) и UPM (Unity) доступны для стабильных выпусков (ветки release/*
). Подробности см. на странице выпуска на GitHub или на странице загрузки документации.
Примечание . master
ветка может содержать критические изменения API из последней стабильной версии. Поэтому не гарантируется работа с пакетами NuGet, которые доступны только для стабильных выпусков. В частности, сценарии библиотеки Unity гарантированно совместимы с пакетами NuGet только в том случае, если они скопированы из ветки release/*
, хотя вместо этого настоятельно рекомендуется использовать пакеты UPM.
Ветка release/2.0
содержит последнюю стабильную версию API, из которой публикуются пакеты NuGet и UPM.
Ветка master
содержит последние разработки. Мы позаботились о том, чтобы поддерживать эту ветку в достаточно чистом состоянии (ветка может быть построена, тесты пройдены). Однако master
ветка содержит критические изменения API по сравнению с последней версией и, следовательно, несовместима с пакетами NuGet/UPM и вместо этого должна быть собрана из исходных кодов (см. документацию по сборке из исходных кодов).
Официальная документация размещена по адресу https://microsoft.github.io/MixedReality-WebRTC/.
Руководство пользователя содержит общий обзор различных библиотек проекта и несколько руководств по их использованию.
Доступен справочник по API для библиотеки C# и интеграции Unity.
Общая архитектура выглядит следующим образом:
Библиотека | Ланг | Описание |
---|---|---|
mrwebrtc | С/С++ | Собственная библиотека C/C++, обеспечивающая низкоуровневый интерфейс для базовой реализации WebRTC от Google. По сравнению с API, предоставляемым реализацией Google ( PeerConnection ), текущий интерфейс упрощен, чтобы снять бремя установки и настройки. Он также пытается предотвратить распространенные ошибки потоковой обработки с помощью оболочек UWP. Эта библиотека предоставляет чистый C API, который легко интегрируется в любое приложение C/C++. |
Microsoft.MixedReality.WebRTC | С# 7.3 | Библиотека C# .Net Standard 2.0, обеспечивающая доступ к тому же API, что и собственная библиотека C, с использованием знакомых концепций C#, таких как async / await и Task . |
Microsoft.MixedReality.WebRTC.Unity | С# 7.3 | Интеграция Unity3D — набор компонентов Unity MonoBehaviour , практически не требующий настройки, позволяющий быстро создавать прототипы и упрощать интеграцию в существующее приложение. |
Microsoft.MixedReality.WebRTC.Unity.Examples | С# 7.3 | Примеры Unity3D, демонстрирующие типичные сценарии использования, такие как одноранговое приложение для видеочата. |
MixedReality-WebRTC в настоящее время доступен для Windows 10 Desktop и UWP с Unity или без него, а также для Android (только Unity).
Примечание . Далее и в других местах этого репозитория термин «Win32» используется как синоним «Windows Desktop», исторического API Windows для разработки настольных приложений, и в отличие от API «Windows UWP». Однако версии Microsoft Windows старше Windows 10 с Windows SDK 17134 (обновление от апреля 2018 г., 1803) официально не поддерживаются для этого проекта. В частности, старые версии 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
mrwebrtc-uwp
mrwebrtc-win32-tests
Microsoft.MixedReality.WebRTC
Microsoft.MixedReality.WebRTC.Tests
Microsoft.MixedReality.WebRTC.TestAppUWP
на основе WPF и XAML, который демонстрирует передачу аудио, видео и данных с помощью простого приложения для видеочата. Примечание . В настоящее время из-за ограничений CI некоторые проекты переведены на версию VS 2017, поскольку этап Google M71, на котором строятся ветки master
и release/1.0
не поддерживает VS 2019, а агенты Azure DevOps CI не поддерживают несколько версий Visual Studio на тот же агент. Со временем это будет возвращено к VS 2019 (см. № 14).
См. раздел руководства пользователя «Сборка из исходников».
VideoRecording
или VideoConferencing
. Это обрабатывается автоматически на уровне интеграции Unity (см. здесь), если WebcamSrouce.FormatMode = Automatic
(по умолчанию), но должно обрабатываться вручную при непосредственном использовании библиотеки C#.screenDuplication
, которую не могут получить сторонние приложения . Короче говоря, MRC недоступен для общих приложений. Это ограничение ОС.PreferredVideoCodec = "H264"
чтобы использовать аппаратный кодировщик, присутствующий на устройстве; Программное кодирование, например , с помощью кодеков VP8 или VP9, требует очень большой загрузки ЦП и поэтому настоятельно не рекомендуется. Текущая версия представляет собой общедоступную предварительную версию, которая содержит известные проблемы:
Microsoft.MixedReality.WebRTC.Native
включают некоторые заголовки WebRTC из репозитория Google, которые не поставляются ни с одним из самих пакетов NuGet, а вместо этого требуют клонирования этого репозитория и его зависимостей. (см. № 123).Кроме того, известно, что конфигурация отладки базовой реализации WebRTC демонстрирует некоторые проблемы с производительностью на большинстве устройств, включая некоторые ПК более высокого класса. Использование конфигурации выпуска базовой реализации WebRTC обычно предотвращает это и настоятельно рекомендуется, если не проводится отладка.
В этом проекте принят Кодекс поведения Microsoft с открытым исходным кодом. Для получения дополнительной информации см. Часто задаваемые вопросы о Кодексе поведения или свяжитесь с нами по адресу [email protected], если у вас возникнут дополнительные вопросы или комментарии.
MixedReality-WebRTC основан на реализации WebRTC, предоставленной Google. О проблемах безопасности и ошибках, связанных с этой реализацией, следует сообщать в Google.
О проблемах безопасности и ошибках, связанных с самим MixedReality-WebRTC или WebRTC UWP SDK, следует сообщать в частном порядке по электронной почте в Центр реагирования на безопасность Microsoft (MSRC) [email protected]. Вы должны получить ответ в течение 24 часов. Если по какой-то причине вы этого не сделали, пожалуйста, свяжитесь с нами по электронной почте, чтобы убедиться, что мы получили ваше исходное сообщение. Дополнительную информацию, включая ключ MSRC PGP, можно найти в Техцентре безопасности.