MixedReality-WebRTC é uma coleção de bibliotecas para ajudar desenvolvedores de aplicativos de realidade mista a integrar comunicação ponto a ponto de áudio e vídeo em tempo real em seus aplicativos e melhorar sua experiência colaborativa.
MixedReality-WebRTC faz parte da coleção de repositórios desenvolvidos e mantidos pela equipe Mixed Reality Sharing.
MR-WebRTC foi descontinuado. Não estamos mais comprometendo recursos de desenvolvimento com ele, aceitando solicitações pull ou planejando uma substituição para ele.
Os pacotes NuGet (C++, C#) e UPM (Unity) estão disponíveis para versões estáveis ( release/*
branchs). Consulte a página de lançamento no GitHub ou a página de documentação de download para obter detalhes.
Nota : O branch master
pode conter alterações importantes na API da versão estável mais recente. Portanto, não é garantido que funcione com pacotes NuGet, que estão disponíveis apenas para versões estáveis. Em particular, os scripts da biblioteca Unity só têm garantia de compatibilidade com pacotes NuGet se copiados de uma ramificação release/*
, embora seja altamente recomendável usar os pacotes UPM.
A ramificação release/2.0
contém a versão estável mais recente da API, a partir da qual os pacotes NuGet e UPM são publicados.
O branch master
contém os desenvolvimentos mais recentes. Foi tomado cuidado para manter este branch em um estado razoavelmente limpo (o branch pode ser compilado, os testes são aprovados). No entanto, a ramificação master
contém alterações significativas na API em comparação com a versão mais recente e, portanto, não é compatível com pacotes NuGet/UPM e deve ser criada a partir de fontes (consulte Compilando a partir da documentação de fontes).
A documentação oficial está hospedada em https://microsoft.github.io/MixedReality-WebRTC/.
O Manual do Usuário contém uma visão geral das diversas bibliotecas do projeto e alguns tutoriais sobre como utilizá-las.
Uma referência de API está disponível para a biblioteca C# e a integração do Unity.
A arquitetura geral é a seguinte:
Biblioteca | Lang | Descrição |
---|---|---|
mrwebrtc | C/C++ | Biblioteca C/C++ nativa que fornece uma interface de baixo nível para a implementação WebRTC subjacente do Google. Em comparação com a API exposta pela implementação do Google ( PeerConnection ), a interface atual é simplificada para eliminar a carga de instalação e configuração. Ele também tenta evitar erros comuns de threading com os wrappers UWP. Esta biblioteca expõe uma API C pura facilmente integrada em qualquer aplicativo C/C++. |
Microsoft.MixedReality.WebRTC | C#7.3 | Biblioteca C# .Net Standard 2.0 que fornece acesso à mesma API que a biblioteca C nativa, exposta com conceitos familiares de C#, como async / await e Task . |
Microsoft.MixedReality.WebRTC.Unity | C#7.3 | Integração Unity3D - um conjunto de componentes Unity MonoBehaviour quase sem configuração necessária, para permitir a prototipagem rápida e simplificar a integração em um aplicativo existente. |
Microsoft.MixedReality.WebRTC.Unity.Examples | C#7.3 | Amostras do Unity3D apresentando cenários de uso típicos, como um aplicativo de bate-papo por vídeo ponto a ponto. |
MixedReality-WebRTC está atualmente disponível para Windows 10 Desktop e UWP, com ou sem Unity, e Android (somente Unity).
Nota - A seguir e em outras partes deste repositório, o termo "Win32" é usado como sinônimo de "Windows Desktop", a API histórica do Windows para desenvolvimento de aplicativos Desktop e em oposição à API "Windows UWP". No entanto, versões do Microsoft Windows anteriores ao Windows 10 com Windows SDK 17134 (atualização de abril de 2018, 1803) não são oficialmente suportadas para este projeto. Em particular, versões mais antigas do Windows (Windows 7, Windows 8, etc.) não são explicitamente suportadas.
Este repositório segue o Pitchfork Layout na tentativa de padronizar sua hierarquia:
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
A solução Microsoft.MixedReality.WebRTC.sln
Visual Studio 2019 localizada na raiz do repositório contém vários projetos:
mrwebrtc
, que pode ser compilada:mrwebrtc-win32
mrwebrtc-uwp
mrwebrtc-win32-tests
Microsoft.MixedReality.WebRTC
Microsoft.MixedReality.WebRTC.Tests
Microsoft.MixedReality.WebRTC.TestAppUWP
baseado em WPF e XAML que demonstra comunicação de áudio/vídeo/dados por meio de um aplicativo simples de chat de vídeo. Observação : atualmente, devido a limitações de CI, alguns projetos foram rebaixados para o VS 2017, pois o marco do Google M71 em que as ramificações master
e release/1.0
estão sendo construídas não oferece suporte ao VS 2019, e os agentes de CI do Azure DevOps não oferecem suporte a várias versões do Visual Studio no mesmo agente. Eventualmente, isso será revertido para o VS 2019 (consulte o item 14).
Consulte a seção do manual do usuário em Construindo a partir de fontes.
VideoRecording
ou VideoConferencing
. Isso é tratado automaticamente na camada de integração do Unity (veja aqui) se WebcamSrouce.FormatMode = Automatic
(padrão), mas deve ser tratado manualmente se estiver usando a biblioteca C# diretamente.screenDuplication
, que não pode ser obtido por aplicativos de terceiros . Resumindo, o MRC não está disponível para aplicativos compartilhados. Esta é uma limitação do sistema operacional.PreferredVideoCodec = "H264"
para usar o codificador de hardware presente no dispositivo; a codificação de software com, por exemplo, codecs VP8 ou VP9 consome muito CPU e é fortemente desencorajada. A versão atual é uma prévia pública que contém problemas conhecidos:
Microsoft.MixedReality.WebRTC.Native
incluem alguns cabeçalhos WebRTC do repositório do Google, que não são fornecidos com nenhum dos pacotes NuGet, mas exigem a clonagem deste repositório e suas dependências (veja #123).Além disso, sabe-se que a configuração de depuração da implementação principal do WebRTC apresenta alguns problemas de desempenho na maioria dos dispositivos, incluindo alguns PCs de última geração. Usar a configuração de versão da implementação principal do WebRTC geralmente evita isso e é altamente recomendado quando não estiver depurando.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
MixedReality-WebRTC baseia-se na implementação WebRTC fornecida pelo Google. Problemas de segurança e bugs relacionados a esta implementação devem ser relatados ao Google.
Problemas de segurança e bugs relacionados ao próprio MixedReality-WebRTC ou ao WebRTC UWP SDK devem ser relatados em particular, por email, para o Microsoft Security Response Center (MSRC) [email protected]. Você deverá receber uma resposta dentro de 24 horas. Se por algum motivo você não fizer isso, entre em contato por e-mail para garantir que recebemos sua mensagem original. Mais informações, incluindo a chave MSRC PGP, podem ser encontradas no Security TechCenter.