O que é WebRTC?

WebRTC (Web Real Time Communications) é um padrão que permite comunicação ponto a ponto em tempo real e troca de dados de mídia em navegadores, eliminando a necessidade de baixar e instalar aplicativos extras ou complementos. Graças ao WebRTC, qualquer navegador pode atuar como um terminal de videoconferência: você só precisa abrir sua página da web de sua reunião para iniciar a videoconferência. Este artigo descreve WebRTC e seus exemplos de uso populares, bem como as vantagens e desvantagens dessa tecnologia.

What is WebRTC

Casos de Uso do WebRTC

WebRTC is

TrueConf Server é um sistema de videoconferência baseado em SVC auto-hospedado que opera em LAN/VPN e na Internet. O servidor de seminário web é implantado nas instalações da sua empresa, restringindo o acesso de terceiros aos seus dados pessoais. TrueConf pode ser uma boa solução para transmissão de eventos virtuais, ensino à distância e trabalho remoto, graças ao vídeo de resolução 4K e uma série de ferramentas de colaboração.

Google Meet

O Google Meet é um serviço de mensagens instantâneas, comunicação de áudio e vídeo lançado pelo Google em 2017. Os navegadores baseados em Chromium (Google Chrome, etc.) usam muitos recursos WebRTC ocultos que não são descritos nas especificações técnicas. Novos lançamentos WebRTC são geralmente integrados ao Google Meet (como com seu predecessor, o Google Hangouts), por exemplo, captura de tela, fundo desfocado e criptografia de hardware para algumas plataformas.

Jitsi Meet

Jitsi Meet é um aplicativo de código aberto lançado pela 8x8. A tecnologia Jitsi é baseada na arquitetura Simulcast, o que significa que o serviço pode operar de forma instável em baixa largura de banda e exigir conexão de alta velocidade à Internet do lado do servidor. Jitsi oferece suporte apenas para conferências baseadas em navegadores e não fornece aplicativos de videoconferência completos. Com o Jitsi, é possível acomodar até 75 participantes em uma reunião (até 35 para uma experiência de alta qualidade). No entanto, Jitsi não é uma solução pronta, portanto, para fazer uso completo do Jitsi em um ambiente corporativo, você precisará de habilidades de programação avançadas.

BigBlueButton

BigBlueButton é um software de videoconferência de uso gratuito com forte foco na educação. BigBlueButton suporta videoconferências com até 100 participantes e oferece muitos recursos essenciais para o ensino à distância, por exemplo, quadro branco interativo, compartilhamento de conteúdo, enquetes, salas de descanso e muito mais.

E quanto ao Zoom WebRTC?

Ao contrário da crença popular, o Zoom não usa a tecnologia WebRTC para transferir e decodificar dados de mídia a fim de economizar recursos do servidor. Considerando o lado do navegador, Zoom envolve outras tecnologias da web, como WebAssembly e WebSocket. Abordagens não padronizadas para a transferência de streams de vídeo podem resultar em baixa qualidade de áudio e vídeo e problemas de conectividade.

Como Funciona o WebRTC

Vamos ver como a tecnologia WebRTC funciona usando uma chamada ponto a ponto baseada em navegadores como exemplo:

WebRTC example
  1. Um usuário abre uma página WebRTC.
  2. Um navegador pode solicitar acesso a uma webcam e a um microfone. Nesse caso, o usuário precisa conceder permissão para que o aplicativo WebRTC tenha acesso aos dispositivos do usuário. Também há casos em que essa permissão não é necessária, por exemplo, ao assistir a uma transmissão ao vivo.
  3. TrueConf Server
  4. O pacote de Protocolo de Descrição de Sessão (SDP) é gerado no navegador que inicia a conexão. Na verdade, é um arquivo de texto que contém detalhes importantes de conexão, por exemplo, tipo de dados de mídia (áudio, vídeo ou conteúdo), codecs, quais parâmetros são suportados por um navegador, etc.
  5. Dependendo de como a tecnologia é implementada, um iniciador de conexão transfere esse pacote para outros participantes. Geralmente se utiliza um servidor de sinalização e protocolo WebSocket para esse propósito.
  6. No lado receptor, um navegador recebe um pacote SDP e, em seguida, gera um semelhante que também obtém os dados do primeiro pacote. O segundo pacote é enviado de volta ao lado inicial. Agora, os dois clientes já se conhecem de certa forma.
  7. Dependendo de sua implementação, o estado da conexão de rede é analisado juntamente com as etapas anteriores. Os clientes recebem um endereço de servidor STUN que é usado para descobrir o endereço IP externo do dispositivo. Em seguida, é comparado ao endereço IP interno para determinar se o NAT está sendo usado com a conexão e, em caso afirmativo, como os pacotes UDP são roteados. Em casos mais complexos, por ex. quando o NAT duplo é usado, os desenvolvedores usam servidores TURN. Eles são essencialmente repetidores transformando uma conexão ponto a ponto (P2P) em uma conexão cliente-servidor-cliente.
  8. Depois que essas etapas forem concluídas com êxito, a conexão será estabelecida. O evento onicecandidate é solicitado periodicamente para transferir informações sobre endereços IP, configurações de NAT e tentativas de conexão entre clientes.
  9. WebRTC leak prevent

WebRTC em Dispositivos Móveis

Vantagens

  • Não requer instalação de software.
  • Comunicação de alta qualidade graças a:
    • Codecs modernos de vídeo e áudio
    • Ajuste automático de qualidade
    • Cancelamento integrado de eco e ruído
    • Controle Automático de Ganho (AGC).
  • Foco de segurança forte: todas as conexões são protegidas e criptografadas de acordo com os protocolos DTLS e SRTP. Ao mesmo tempo, o WebRTC opera apenas no protocolo HTTPS, enquanto um site que usa essa tecnologia deve ter um certificado assinado.
  • Suporte SVC adicionado como parte da implementação dos codecs VP9 e AV1. Apesar do fato de que os navegadores ainda não suportam SVC, TrueConf possibilita o SVC em navegadores de clientes.
  • Recurso de compartilhamento nativo da área de trabalho.
  • Interfaces de controle baseadas em HTML5 e JavaScript.
  • Projeto de código aberto que pode ser incorporado ao seu produto ou serviço.
  • Multiplataforma: o aplicativo WebRTC funciona igualmente bem com qualquer sistema operacional - desktop ou móvel - se um navegador oferecer suporte a WebRTC. Isso economiza significativamente os recursos de desenvolvimento de software.

Desvantagens

  • As soluções WebRTC são incompatíveis entre si, já que o padrão descreve apenas os métodos para transferir dados de vídeo e áudio, permitindo que os desenvolvedores decidam os métodos de endereçamento, opções de rastreamento de status, troca de mensagens e arquivos, agendamento, etc. Em outras palavras, não se pode fazer chamadas de um aplicativo WebRTC para outro.
  • Os usuários preocupados com a segurança ficarão desapontados ao saber que o WebRTC detecta seus endereços IP reais. Ao mesmo tempo que, nem um proxy nem a rede Tor poderão ajudar a manterem-se anônimos. Você pode ocultar seu endereço IP usando vários serviços VPN e o servidor TURN. Se necessário, o WebRTC pode ser desabilitado.
  • WebRTC não oferece suporte a controle remoto da área de trabalho. É claro que você pode transmitir o que está acontecendo na tela do seu dispositivo, mas é um fluxo de vídeo unilateral como uma imagem transmitida de uma câmera, embora não haja maneira de interagir com uma fonte de fluxo. Isso é feito por razões de segurança: o código Javascript não pode controlar nada fora da janela atual do navegador. Você pode obter mais recursos, incluindo controle remoto da área de trabalho, usando aplicativos cliente personalizados por provedores de videoconferência.

Mercado de Videoconferências e WebRTC

Popularidade da Tecnologia

Atualmente, o WebRTC é o segundo em popularidade entre os protocolo de vídeo, depois do patenteado pela Zoom. O WebRTC ultrapassa todos os outros protocolos padrão (H.323 e SIP) e patenteados (Microsoft Teams e Cisco Webex).

Um aumento nos terminais de videoconferência

A tecnologia WebRTC teve um impacto profundo no mercado de videoconferências. Após o lançamento dos primeiros navegadores com WebRTC em 2013, o número potencial de terminais de videoconferência aumentou em 1 bilhão de dispositivos em todo o mundo. Na verdade, cada navegador agora é um terminal de videoconferência com recursos básicos.

Soluções Personalizadas

Várias bibliotecas JavaScript e APIs de nuvem com suporte WebRTC permitem adicionar suporte de vídeo a qualquer projeto da web. Anteriormente, a transferência de dados em tempo real exigia habilidades de programação avançadas e licenciamento adicional, o que resultava em aumento de custo. Atualmente, o WebRTC é amplamente usado para organizar centros de contato com vídeo, realizar webinars, etc.

WebRTC vs Flash

WebRTC e HTML5 foram um golpe mortal para o Flash que já estava passando por seus tempos difíceis. Desde 2017, os navegadores líderes deixaram oficialmente de oferecer suporte ao Flash, forçando essa tecnologia a desaparecer completamente do mercado.

Aspectos do WebRTC

Codecs do WebRTC

Os codecs WebRTC podem ser divididos em obrigatórios (é necessário que os navegadores que implementam essa tecnologia suportem esses codecs) e opcionais (não padrão, embora alguns navegadores os suportem).

Codecs de Áudio

Para comprimir o tráfego de áudio, o WebRTC usa codecs obrigatórios (Opus e G.711) e opcionais (G.722, iLBC, iSAC).

Opus é um codec de áudio de baixa latência (2,5 ms a 60 ms) com suporte para taxa de bits variável e alta compactação, que é perfeito para streaming de áudio em redes de largura de banda variável. Opus é o principal codec de áudio para WebRTC. É uma solução híbrida que combina os melhores recursos dos codecs SILK (compressão de voz e aprimoramento da fala humana) e CELT (codificação de áudio). Esse codec é aberto e totalmente livre de royalties. Sem dúvida, o Opus supera outros codecs de áudio de várias maneiras. Quanto ao número de parâmetros, ele supera os codecs de baixa taxa de bits bastante populares, como MP3, Vorbis e AAC LC. Comparado com AMR-WB e Speex, o Opus restaura a estrutura de áudio mais próxima do original.

G.711 é um codec de voz legado de alta taxa de bits (64 kbps) projetado para uso em sistemas VoIP tradicionais. A principal vantagem é a carga computacional mínima graças aos algoritmos de compressão leves. O codec tem um baixo nível de compressão dos sinais de áudio e não aumenta o atraso do áudio na comunicação entre os usuários.

G.711 é compatível com muitos dispositivos. Os sistemas que utilizam este codec são mais fáceis de usar do que aqueles baseados em outros codecs de áudio, como G.723, G.726, G.728, etc. Em termos de qualidade, G.711 pontuou 4,2 no teste MOS (uma pontuação de 4–5 é o mais alto e significa boa qualidade semelhante à qualidade do tráfego de voz em ISDN e ainda superior).

Sendo livre de royalties, o G.722 é um padrão ITU-T adotado em 1988. Ele pode operar a 48, 56 e 64 kbps, fornecendo qualidade de áudio igual ao G.711. Semelhante ao G.711, é legado, mas ainda é compatível com Chrome, Safari e Firefox.

iLBC (Internet Low Bitrate Codec) é um codec de voz de banda estreita de código aberto compatível com Chrome e Safari. Devido à alta compressão de fluxo, este codec aumenta a carga da CPU.

iSAC (Internet Speech Audio Codec) é um codec de áudio de voz de banda larga proprietário que agora faz parte do projeto WebRTC. Apesar de não ser obrigatório, é compatível com Chrome e Safari. No caso do WebRTC, ele usa uma taxa de bits adaptável de 10 a 52 kbps com uma taxa de amostragem de 32 kHz.

Codecs de Vídeo

Qual codec de vídeo escolher para WebRTC? Os desenvolvedores tiveram que pensar sobre isso por vários anos, e a resposta é VP8 e H.264. Existem também codecs de vídeo opcionais (H.265, VP9 e AV1).

VP8 é um codec de vídeo aberto livre de royalties com alta velocidade de decodificação de vídeo e maior resistência à perda de quadro. O codec é multifuncional: é fácil de integrar em plataformas de hardware, então os provedores de videoconferência costumam usá-lo em seus produtos. É compatível com Chrome, Edge, Firefox e Safari (12.1+).

O codec de vídeo pago H.264 veio a ser conhecido muito antes de sua contraparte. Este codec oferece uma alta taxa de compressão para streams de vídeo, mantendo a alta qualidade de vídeo. Amplamente utilizado em sistemas de videoconferência de hardware, é perfeito para WebRTC. É compatível com Chrome (52+), Edge, Firefox (não é mais compatível com as versões 68+ para Android) e Safari.

VP9 é um padrão de compressão de vídeo aberto e livre de royalties desenvolvido pelo Google em 2012. Posteriormente expandido dentro do AV1It, ele resulta das ideias por trás do VP8. Este codec é compatível com Chrome (48+) e Firefox.

H.265 é um codec de vídeo pago visto como um sucessor do H.264 e fornecendo a mesma qualidade visual com metade da taxa de bits. Isso é possível graças a algoritmos de compressão mais eficientes. Este codec está competindo atualmente com o AV1 livre de royalties.

AV1 é um codec de compressão de vídeo de código aberto criado especificamente para a transmissão de vídeo pela Internet. É compatível com Chrome (70+) e Firefox (67+).

“Compatível com o Chrome” significa a compatibilidade com todos os navegadores baseados no Chromium nas versões correspondentes.

Conexão WebRTC

Dependendo de sua implementação WebRTC, pode haver certas diferenças nas versões dos navegadores compatíveis. Saiba mais sobre navegadores de desktop e móveis suportados por TrueConf aqui.

Se você está ansioso para saber como a tecnologia WebRTC se desenvolverá, recomendamos que visite seu site oficial, o site do projeto WebRTC e o repositório.


Implemente seu próprio servidor de webinar em 15 minutos!