Sobre o projeto

pi-webrtc é um projeto de código aberto (Apache-2.0) que empacota streaming de câmera WebRTC e controle remoto em um único binário para dispositivos Raspberry Pi e NVIDIA Jetson. É escrito em C++20 e construído contra libwebrtc (m147.7727). O que faz - Transmite uma câmera de um Raspberry Pi ou Jetson para um navegador via WebRTC, com o projeto alegando latência inferior a 100ms em LAN. - Envia mensagens de controle e telemetria de volta ao dispositivo via DataChannels WebRTC. - Funciona remotamente via WiFi, LTE ou 5G sem exigir IP público, usando travessia NAT e controle de congestionamento. - Suporta codificação H.264/AV1 acelerada por hardware em dispositivos compatíveis, com fallback automático para codificação por software quando não suportado. Opções de sinalização Três modos de sinalização são documentados, e vários podem ser habilitados ao mesmo tempo: - MQTT: peer-to-peer com controle do dispositivo, adequado para acesso remoto. - WHEP: reprodução com qualquer player WebRTC padrão. - SFU: espectadores simultâneos via LiveKit ou Cloudflare Realtime. Suporte de hardware - Raspberry Pi: backend libcamera, codificação H.264 por hardware em modelos suportados. - NVIDIA Jetson: backend libargus, codificação H.264/AV1 por hardware em modelos suportados. - Câmeras USB via V4L2 em ambas as plataformas. Início rápido No Raspberry Pi OS Trixie (64 bits), instale as dependências (libmosquitto1, pulseaudio, libavformat61, libswscale8, libyaml-cpp0.8), baixe o tarball da versão mais recente e execute o binário. Um teste WHEP local pode ser iniciado com uma câmera e UID, e então visualizado através de um player web inserindo a URL WHEP do dispositivo. Para uso remoto peer-to-peer, o binário aceita flags de host MQTT, porta, usuário, senha, UID, resolução, FPS e aceleração de hardware; uma instância gratuita do HiveMQ Cloud ou um broker auto-hospedado pode ser usado. Documentação e licenciamento A documentação completa está vinculada ao repositório, com documentos separados para sinalização e início rápido. O projeto é licenciado sob Apache-2.0 com avisos de terceiros em NOTICE. O README também menciona um programa de patrocínio que fornece acesso a versões, recursos e documentação adicionais.