1
Liste as câmeras da conta
device_id de cada uma — é o identificador que todas as outras
rotas aceitam.2
Peça o endereço do vídeo, no momento de exibir
3
Toque
whep_url é WebRTC (sub-segundo). hls_url é o plano B, e você vai
precisar dele — veja o orçamento de 5 segundos, abaixo.O player, inteiro
WHEP é WebRTC com uma única troca HTTP: você fazPOST da sua oferta SDP no
whep_url, recebe a resposta SDP no corpo, e o vídeo começa. Não precisa de
biblioteca.
Este é o mesmo caminho que o console do Pictor usa em produção — inclusive as
duas decisões que não são óbvias e estão comentadas abaixo.
O orçamento de 5 segundos, e por que o HLS não é opcional
O motivo é o perfil de vídeo. O WebRTC negocia o formato antes de o vídeo começar, e o que o decodificador de hardware do dispositivo aceita não é o mesmo em toda câmera. Quando a negociação fecha num formato que aquele aparelho não decodifica, a conexão sobe e a imagem não vem — que é exatamente o caso em queconnectionState mente e só o primeiro quadro conta.
Consequências práticas para o seu código:
- Meça o primeiro quadro, não a conexão. É o número que diz se a portaria está usável.
- Tenha o
hls_urlem mão antes de tentar o WHEP. Ele vem na mesma resposta — não custa uma segunda chamada. - Não faça retry de WHEP. Se não rendeu, não vai render nesta câmera neste aparelho: vá para o HLS e fique nele.
Onde a chave mora
O desenho é sempre este:Quando não abre
A rota não devolve200 com um endereço mudo. Quando não há como preparar a
transmissão, ela responde 502 com a causa nomeada:
O prazo
expires_in é o prazo da assinatura da URL, em segundos — não o prazo do
vídeo. Passado ele, o endereço deixa de abrir e você pede outro.
Peça a URL quando for exibir. Pedir em lote, para as 40 câmeras do condomínio, e
guardar para quando o operador clicar, não economiza chamada nenhuma: entrega 39
endereços vencidos e queima o teto de mídia da conta.