Skip to content

O arquivo DVR

O arquivo transforma um stream de «só ao vivo» em um nPVR: o espectador retrocede, alcança o início do programa, assiste ao episódio de ontem. A gravação é feita pelo streamer onde o stream roda; esta página prepara os discos, liga a gravação e mostra como conferir que o arquivo está mesmo sendo gravado e tocado.

Prepare os discos do streamer

O armazenamento do arquivo é uma configuração do streamer, não do stream. Abra o streamer no registro, o bloco DVR das configurações dele:

  • Raiz do arquivo — o diretório onde os discos do arquivo estão montados.
  • Discos — um por dispositivo físico: diretórios filhos da raiz.
  • Verificar montagens antes de gravar — ligado por padrão: um diretório sem montagem própria é reportado como «não montado», e o streamer se recusa a gravar o arquivo na partição raiz do sistema — um jeito garantido de derrubar a máquina junto com o arquivo. Desligue só de forma consciente.

Os discos se montam assim: monte cada disco como diretório filho de um diretório comum — /storage/dvr/disk1, /storage/dvr/disk2, /storage/dvr/disk3 —, indique o diretório comum como Raiz do arquivo e inclua cada disco na lista de discos como seu diretório filho:

Configurações do streamer: a raiz do arquivo e os discos abaixo dela

Pressione Salvar alterações — o central entrega o armazenamento ao streamer, e os indicadores de aplicação mostram quando entrou em vigor. Sem armazenamento configurado a gravação não começa, por mais streams que a peçam.

O streamer local de uma instalação de uma só máquina não é exceção: ele se abre a partir do mesmo registro, e seu armazenamento se configura no mesmo bloco DVR do console.

JBOD em vez de RAID

O subsistema de arquivo do Catena é um application RAID: o próprio streamer distribui a gravação entre dispositivos independentes, ele mesmo percebe um disco caído e continua gravando nos restantes. Por isso os discos são entregues a ele separadamente — JBOD: cada um com seu sistema de arquivos e seu ponto de montagem, como na montagem acima. Perder um disco custa exatamente a parte do arquivo daquele disco: os demais continuam gravando, e o indicador DVR fica vermelho no registro de streamers.

Não recomendamos RAID por hardware nem por software sob o arquivo — e prometemos que com essas soluções de engenharia você vai esbarrar em problemas. A gravação do arquivo é um fluxo contínuo para todos os streams da máquina ao mesmo tempo, e sob essa carga um array se comporta pior que a soma dos seus discos: a degradação ou o rebuild de um único disco freia o array inteiro, e os atrasos e omissões de gravação crescem em todos os streams ao mesmo tempo. É exatamente assim que a sobrecarga do arquivo aparece no gráfico de gravação da aba DVR: as curvas de omissões e atrasos sobem em todos os streams da máquina de uma vez.

Ligue a gravação

Na página do stream abra a aba DVR:

  • Gravar no DVR — liga a gravação.
  • Retenção (horas) — quantas horas de transmissão manter; o que sai da profundidade é apagado sozinho.
  • Tamanho máx. (bytes) — teto de espaço em disco. Os dois limites atuam juntos: o que chegar primeiro apara o arquivo.

Pressione Salvar. Em um ou dois minutos a mesma aba mostra o Estado atual da gravação: um indicador com o veredicto e a janela do arquivo — do início da gravação até agora. Quando o streamer reporta estatísticas estendidas, aparecem aqui também as horas com dados (com buracos, se a gravação foi interrompida), o tamanho do arquivo, as velocidades de gravação ao vivo e o gráfico de gravação — a história dessas velocidades junto com erros e omissões.

A aba DVR: configurações e estado atual da gravação

Faça cache do arquivo de outro

Na mesma aba há um segundo interruptor — Cachear o arquivo. Não é uma configuração da gravação, e sim uma propriedade independente: as leituras do arquivo do stream assentam nos discos de cache do streamer, e uma solicitação repetida da mesma parte é servida localmente, sem ir à fonte.

A aba DVR: dois interruptores independentes — gravação e cache

Não é preciso ligar a gravação para isso, e é justamente esse o ponto: um edge faz cache do arquivo de outro sem gravar o seu. A distribuição típica é um origin que grava o arquivo e edges mais perto dos espectadores guardando o que de fato é assistido.

O cache só funciona onde o streamer tem discos de cache configurados. Um stream com o cache ligado num streamer sem eles não é um erro: o cache simplesmente não funciona e um aviso vai para o log. Isso é normal num cluster, onde um mesmo documento de stream se espalha por máquinas diferentes.

Quanto o cache ocupou e que proporção de solicitações ele atende — na seção DVR do cluster.

Vigie a gravação

Na lista de streams, a coluna DVR de um stream com arquivo mostra quanto está de fato gravado, mais um indicador de saúde:

  • Verde — a gravação vai, sem erros.
  • Amarelo — a gravação está degradada (fragmentos gravados com atraso ou pulados), ou o DVR está configurado mas não grava.
  • Vermelho — erros de gravação: dados estão sendo perdidos agora mesmo.
  • Um traço — o stream não tem arquivo configurado.

A lista de streams: a coluna DVR com o indicador de gravação

A saúde dos discos mora do lado do streamer: quando um disco cai ou enche, o indicador DVR do registro de streamers fica vermelho.

O que o espectador recebe

O arquivo é servido pelos mesmos endereços HLS que o ao vivo — o reprodutor não precisa de nada especial:

  • Retrocesso: /streaming/v/<nome>/rewind/<segundos>/index.m3u8 — o mesmo stream deslocado ao passado pelo número de segundos indicado. rewind/3600 é uma hora atrás.
  • Faixas gravadas: /streaming/dvr-ranges/<nome> — JSON com a lista de intervalos gravados. Sobre ele se constroem as linhas do tempo de arquivo nos reprodutores: dá para ver o que está gravado e onde há buracos.
  • Clipe de preview: /streaming/dvr-preview-mp4/<nome>/<utc_ms> — um MP4 curto ao redor de um momento (UTC em milissegundos). Útil para interfaces editoriais e de moderação: mostrar um pedaço do arquivo sem levantar um reprodutor. É montado das miniaturas gravadas no arquivo — configure os previews com «Guardar miniaturas no DVR» ligado, ou o endereço responderá que não há quadros.

Se a gravação não vai

  • «DVR configurado mas não está gravando». Ou o stream não está no ar — não há o que gravar — ou o streamer não tem armazenamento de arquivo configurado. Confira o status do stream e o bloco DVR nas configurações do streamer.
  • «Erros de gravação do arquivo — dados estão sendo perdidos». O disco está cheio, caiu ou não está montado. Olhe o indicador DVR e as configurações de discos no registro de streamers.
  • A janela do arquivo é mais curta que a retenção. É normal logo após ligar: a janela cresce com a gravação e só alcança a profundidade depois dessas horas.

Quanto espaço é usado no cluster

A capacidade de arquivo de todos os streamers de uma vez, a divisão do espaço ocupado entre arquivo ativo e órfão, e a reconstrução do índice estão na página DVR do cluster.