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
hls_url é o caminho curto: playlist comum, qualquer player abre. Use
whep_url quando o atraso de alguns segundos não servir. O diagrama abaixo
diz qual dos dois é o seu caso.hls_url:
O player, inteiro
WHEP é WebRTC com uma única troca HTTP:POST da sua oferta SDP no whep_url,
resposta SDP no corpo, vídeo na tela. Não precisa de biblioteca.
É o mesmo caminho que o console do Pictor usa em produção, com as duas decisões
não óbvias comentadas no código.
O orçamento de 5 segundos
O motivo é o perfil de vídeo. O WebRTC negocia o formato antes de o vídeo começar, e o que o decodificador do aparelho 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: é o caso em queconnectionState mente.
Três consequências para o seu código:
- Meça o primeiro quadro, não a conexão.
- Tenha o
hls_urlem mão antes de tentar o WHEP. Ele vem na mesma resposta. - 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: O endereço que o seu backend repassa ao navegador já é seguro de trafegar: ele carrega a própria assinatura e vence sozinho. É por isso que ele existe — para você entregar vídeo sem entregar credencial.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, 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 o clique entrega 39 endereços vencidos e queima o teto de mídia.