WebRTC
Padronizado pelo W3C e pela IETF, WebRTC combina APIs de captura e conexão com ICE, STUN, TURN, SDP, RTP/RTCP, DTLS-SRTP e SCTP. A recomendação W3C WebRTC 1.0 foi publicada em 2021; as RFCs principais amadureceram no mesmo período. Comparado a RTSP, é nativo em navegadores e exige criptografia, mas a negociação e a travessia de NAT são mais complexas. Para câmeras residenciais, entrega baixa latência, desde que exista sinalização e servidor TURN quando o caminho direto falha.
WebRTC é um ecossistema de APIs, protocolos e perfis para comunicação interativa de áudio, vídeo e dados entre navegadores, aplicativos e dispositivos. Não é um único protocolo de fio. A camada de aplicação usa APIs como `getUserMedia`, `RTCPeerConnection` e `RTCDataChannel`. A sinalização que troca ofertas, respostas e candidatos não é definida pelo WebRTC; pode usar WebSocket, HTTP, SIP, MQTT ou um serviço proprietário. Depois da sinalização, ICE testa caminhos de conectividade. STUN ajuda descobrir endereços públicos e comportamento do NAT. TURN retransmite mídia quando não existe caminho direto. DTLS autentica os endpoints e deriva chaves para SRTP, que protege áudio e vídeo. RTP e RTCP transportam mídia e feedback. SCTP sobre DTLS oferece data channels confiáveis ou parcialmente confiáveis. SDP, no modelo offer/answer, descreve codecs, extensões, direções, fingerprints e parâmetros. O resultado é uma pilha robusta, mas complexa. O W3C publicou WebRTC 1.0 como Recomendação em janeiro de 2021. A IETF publicou a arquitetura RTCWeb e várias RFCs relacionadas entre 2018 e 2021, incluindo ICE RFC 8445, JSEP RFC 8829, WebRTC Security Architecture RFC 8827, RTP usages RFC 8834, data channels RFC 8831 e DTLS-SRTP RFC 5764. A especificação continua evoluindo por extensões e revisões. Em casa inteligente, WebRTC é usado para visualizar câmeras e videoporteiros com baixa latência no navegador ou aplicativo. Home Assistant, go2rtc, Frigate e plataformas de fabricantes podem converter RTSP para WebRTC. O gateway recebe H.264/Opus ou outros codecs e encaminha. Se o codec é compatível, faz remux ou repacketization com pouco CPU. Se a câmera usa H.265 e o navegador não suporta, precisa transcodificar, aumentando latência e consumo. A seleção do codec é central. Navegadores devem suportar codecs mínimos conforme perfis. Opus é comum para áudio; VP8 e H.264 são amplamente usados. Suporte a AV1, VP9 e outros varia. WebRTC usa feedback RTCP para estimar banda, perda e atraso. O emissor adapta bitrate. PLI solicita keyframe. NACK solicita retransmissão rápida. FEC pode ajudar. Congestion control é obrigatório para compartilhar a Internet. A baixa latência vem de buffers menores e adaptação, não de ausência de confiabilidade. Pacotes podem ser retransmitidos quando ainda úteis. A criptografia é obrigatória. Não existe WebRTC de mídia aberta no perfil normal. DTLS usa certificados efêmeros ou gerados e fingerprints trocados na sinalização. A sinalização precisa ser autenticada; se um atacante altera fingerprints, pode intermediar. HTTPS/WSS, tokens e autorização são necessários. Uma câmera não deve aceitar qualquer offer. O servidor precisa verificar que o usuário tem permissão. A identidade do dispositivo e do usuário não vem automaticamente do DTLS. ICE gera candidatos host, server-reflexive, peer-reflexive e relay. Candidatos host podem revelar endereços locais; navegadores usam mDNS e políticas de privacidade. STUN não é relay. TURN é. Esse erro comum causa falhas: um servidor STUN não resolve NAT simétrico ou firewall restritivo. TURN precisa de credenciais, capacidade e largura de banda. Um stream de 2 Mbit/s relay usa aproximadamente 2 Mbit/s de entrada e saída no servidor, além de overhead. Dez câmeras simultâneas consomem. TURN sobre UDP é preferido; TCP/TLS 443 serve fallback. A conexão pode ser peer-to-peer, SFU ou MCU. Em uma casa, navegador pode conectar ao gateway local. Em cloud, um SFU distribui vídeo. MCU transcodifica e compõe. O projeto precisa escolher. WebRTC DataChannel permite eventos, comandos e telemetria, mas não substitui APIs autorizadas. É possível definir ordered/unordered e maxRetransmits. SCTP preserva mensagens e múltiplos streams. Dados críticos precisam de idempotência. A interoperabilidade depende de SDP, codecs, BUNDLE, rtcp-mux, ICE, DTLS e extensões. Navegadores são compatíveis, mas dispositivos embarcados podem implementar subconjunto. Testes cruzados são essenciais. O protocolo não define gravação. Um NVR precisa receber stream separado ou gravar no servidor. WebRTC é excelente para visualização ao vivo, não necessariamente para arquivo contínuo. RTSP pode ser mais simples no backend. A arquitetura híbrida usa RTSP câmera→gateway e WebRTC gateway→browser. Essa comparação concreta explica a escolha. A limitação é operação: sinalização, TURN, certificados, autenticação, métricas e compatibilidade exigem manutenção. Um link “funcionou na LAN” não prova acesso remoto.
- Oferece áudio, vídeo e dados de baixa latência diretamente em navegadores e aplicativos sem plugin RTSP.
- Exige criptografia de mídia por DTLS-SRTP e inclui proteção contra replay, elevando a base de segurança.
- ICE, STUN e TURN permitem conectar endpoints através de NATs e firewalls em redes residenciais e móveis.
- RTP/RTCP, feedback e congestion control adaptam qualidade a perda, jitter e largura de banda disponível.
- Suporta peer-to-peer, gateway local, SFU e data channels, cobrindo videoporteiros, câmeras e comunicação bidirecional.
- Não define sinalização; cada plataforma precisa construir autenticação, troca de SDP/candidatos, autorização e estado de sessão.
- TURN é necessário para confiabilidade em muitos cenários e consome largura de banda, infraestrutura e custo operacional.
- A interoperabilidade depende de codecs, SDP, extensões e versões; H.265 de câmeras costuma exigir gateway ou transcodificação.
- A pilha ICE+DTLS+SRTP+RTP+SCTP é complexa para firmware embarcado e difícil de diagnosticar sem métricas detalhadas.
- Criptografia de transporte não equivale automaticamente a E2EE quando SFU, gateway ou cloud termina ou processa a mídia.