“O que aconteceu às 3h12?” tem duas respostas, e elas vêm de acervos diferentes.
Escolher o errado devolve 404 numa câmera que tem o vídeo.
Os dois acervos são independentes. Uma câmera pode ter clipe de alarme e não
gravar continuamente, e o contrário também. Se a primeira rota não achou, tente a
segunda antes de dizer ao operador que não há vídeo.
1. O que o alarme mandou guardar
Cada linha já vem tocável: playback_url é um endereço assinado, sem segunda
chamada e sem você saber nada do armazenamento.
Três campos que enganam:
alarm ausente significa que a gravação não nasceu de um evento
(manual, agendada). A ausência é a informação.
partial: true significa que a gravação não fechou limpa: o vídeo pode
truncar no fim. Mostre isso antes de o operador concluir que “acabou aí”.
camera_ref vazio acontece quando a câmera foi apagada do cadastro. A
gravação sobrevive à câmera; o identificador que casa com o seu lado, não.
Buscar por texto
q alcança nome de câmera, local, cliente, descrição do evento e conta:
Abrir uma, e achar os outros ângulos
Peça esta rota quando o operador for de fato abrir o vídeo: a assinatura sai
nova, com prazo cheio.
Ela traz related, as outras gravações do mesmo alarme:
Desenhe related na tela. Um evento num local com oito câmeras produz oito
gravações, e sem essa lista quem abre uma não sabe que as outras sete existem.
Varrer os ângulos do mesmo instante é o que resolve o atendimento.
2. Voltar a fita
Para câmera que grava sem parar, peça a janela direto:
A resposta é a playlist HLS (application/x-mpegURL), pronta para o player:
start e end são ISO 8601 com fuso. Sem vídeo guardado na janela, 404,
que aqui quer dizer as duas coisas ao mesmo tempo (“não há vídeo” e “não é desta
chave”), de propósito.
O prazo
Todo endereço de vídeo aqui é assinado e vence
(quem arquiva, arquiva os bytes).