MixedReality-WebRTC es una colección de bibliotecas para ayudar a los desarrolladores de aplicaciones de realidad mixta a integrar la comunicación de audio y video en tiempo real entre pares en su aplicación y mejorar su experiencia colaborativa.
MixedReality-WebRTC es parte de la colección de repositorios desarrollados y mantenidos por el equipo de Mixed Reality Sharing.
MR-WebRTC ha quedado obsoleto. Ya no le dedicamos recursos de desarrollo, ni aceptamos solicitudes de extracción ni planificamos un reemplazo.
Los paquetes NuGet (C++, C#) y UPM (Unity) están disponibles para versiones estables (ramas release/*
). Consulte la página de lanzamiento en GitHub o la página de descarga de documentación para obtener más detalles.
Nota : La rama master
puede contener cambios importantes en la API de la última versión estable. Por lo tanto, no se garantiza que funcione con paquetes NuGet, que solo están disponibles para versiones estables. En particular, solo se garantiza que los scripts de la biblioteca de Unity sean compatibles con los paquetes NuGet si se copian desde una rama release/*
, aunque se recomienda encarecidamente utilizar los paquetes UPM en su lugar.
La rama release/2.0
contiene la última versión estable de la API, desde la cual se publican los paquetes NuGet y UPM.
La rama master
contiene los últimos desarrollos. Se ha tenido cuidado de mantener esta rama en un estado bastante limpio (la rama se puede construir, las pruebas pasan). Sin embargo, la rama master
contiene cambios importantes de API en comparación con la última versión y, por lo tanto, no es compatible con los paquetes NuGet/UPM y, en su lugar, debe compilarse a partir de fuentes (consulte la documentación sobre compilación a partir de fuentes).
La documentación oficial está alojada en https://microsoft.github.io/MixedReality-WebRTC/.
El Manual de usuario contiene una descripción general de las distintas bibliotecas del proyecto y algunos tutoriales sobre cómo utilizarlas.
Hay una referencia de API disponible para la biblioteca C# y la integración de Unity.
La arquitectura general es la siguiente:
Biblioteca | Lang | Descripción |
---|---|---|
mrwebrtc | C/C++ | Biblioteca nativa C/C++ que proporciona una interfaz de bajo nivel para la implementación WebRTC subyacente de Google. En comparación con la API expuesta por la implementación de Google ( PeerConnection ), la interfaz actual está simplificada para eliminar la carga de instalación y configuración. También intenta evitar errores comunes de subprocesos con los contenedores de UWP. Esta biblioteca expuesta es API C pura y se integra fácilmente en cualquier aplicación C/C++. |
Microsoft.MixedReality.WebRTC | C# 7.3 | Biblioteca C# .Net Standard 2.0 que proporciona acceso a la misma API que la biblioteca C nativa, expuesta con conceptos familiares de C# como async / await y Task . |
Microsoft.MixedReality.WebRTC.Unity | C# 7.3 | Integración de Unity3D: un conjunto de componentes de Unity MonoBehaviour que casi no requiere configuración, para permitir la creación rápida de prototipos y simplificar la integración en una aplicación existente. |
Microsoft.MixedReality.WebRTC.Unity.Examples | C# 7.3 | Ejemplos de Unity3D que muestran escenarios de uso típicos, como una aplicación de video chat de igual a igual. |
MixedReality-WebRTC está actualmente disponible para Windows 10 Desktop y UWP, con o sin Unity, y Android (solo Unity).
Nota : en lo siguiente y en otras partes de este repositorio, el término "Win32" se utiliza como sinónimo de "Escritorio de Windows", la API histórica de Windows para el desarrollo de aplicaciones de escritorio, y en oposición a la API de "Windows UWP". Sin embargo, las versiones de Microsoft Windows anteriores a Windows 10 con Windows SDK 17134 (actualización de abril de 2018, 1803) no son compatibles oficialmente con este proyecto. En particular, no se admiten explícitamente versiones anteriores de Windows (Windows 7, Windows 8, etc.).
Este repositorio sigue el diseño Pitchfork en un intento de estandarizar su jerarquía:
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 solución Microsoft.MixedReality.WebRTC.sln
Visual Studio 2019 ubicada en la raíz del repositorio contiene varios proyectos:
mrwebrtc
, que se puede compilar:mrwebrtc-win32
mrwebrtc-uwp
mrwebrtc-win32-tests
Microsoft.MixedReality.WebRTC
Microsoft.MixedReality.WebRTC.Tests
Microsoft.MixedReality.WebRTC.TestAppUWP
basado en WPF y XAML que demuestra la comunicación de audio/vídeo/datos mediante una sencilla aplicación de chat de vídeo. Nota : actualmente, debido a limitaciones de CI, algunos proyectos se degradan a VS 2017, ya que el hito de Google M71 en el que se basan las ramas master
y release/1.0
no es compatible con VS 2019, y los agentes de Azure DevOps CI no admiten múltiples versiones de Visual Studio en el mismo agente. Esto eventualmente se revertirá a VS 2019 (consulte el n.° 14).
Consulte la sección del manual de usuario sobre Creación a partir de fuentes.
VideoRecording
o VideoConferencing
. Esto se maneja automáticamente en la capa de integración de Unity (ver aquí) si WebcamSrouce.FormatMode = Automatic
(predeterminado), pero debe manejarse manualmente si se usa la biblioteca C# directamente.screenDuplication
, que no pueden obtener aplicaciones de terceros . En resumen, MRC no está disponible para aplicaciones compartidas. Esta es una limitación del sistema operativo.PreferredVideoCodec = "H264"
para utilizar el codificador de hardware presente en el dispositivo; La codificación de software con , por ejemplo, los códecs VP8 o VP9 consume mucha CPU y se desaconseja encarecidamente. La versión actual es una vista previa pública que contiene problemas conocidos:
Microsoft.MixedReality.WebRTC.Native
incluyen algunos encabezados WebRTC del repositorio de Google, que no se incluyen con ninguno de los paquetes NuGet, sino que requieren la clonación de este repositorio y sus dependencias. (ver n.° 123).Además, se sabe que la configuración de depuración de la implementación central de WebRTC presenta algunos problemas de rendimiento en la mayoría de los dispositivos, incluidas algunas PC de gama alta. El uso de la configuración de lanzamiento de la implementación principal de WebRTC generalmente evita esto y se recomienda encarecidamente cuando no se está depurando.
Este proyecto ha adoptado el Código de conducta de código abierto de Microsoft. Para obtener más información, consulte las preguntas frecuentes sobre el Código de conducta o comuníquese con [email protected] si tiene alguna pregunta o comentario adicional.
MixedReality-WebRTC se basa en la implementación de WebRTC proporcionada por Google. Los problemas de seguridad y los errores relacionados con esta implementación deben informarse a Google.
Los problemas y errores de seguridad relacionados con MixedReality-WebRTC o con WebRTC UWP SDK deben informarse de forma privada, por correo electrónico, al Centro de respuesta de seguridad de Microsoft (MSRC) [email protected]. Debería recibir una respuesta dentro de las 24 horas. Si por alguna razón no lo hace, envíe un correo electrónico para asegurarse de que hayamos recibido su mensaje original. Puede encontrar más información, incluida la clave MSRC PGP, en Security TechCenter.