OTT e DVR

O subsistema OTT distribui fluxos por protocolos baseados em HTTP: HLS (sobre MPEG-TS), MPEG-DASH e Low-Latency HLS (sobre CMAF — MP4 fragmentado), bem como MPEG-TS over HTTP. São suportados HTTPS e HTTP/3 (QUIC). A distribuição é habilitada na aba «OTT» do editor de fluxo (Configurar fluxo) e está disponível somente para fluxos SPTS; um programa do multiplex é extraído para um fluxo SPTS pelo demultiplexador (Demultiplexador).

O DVR é um arquivo permanente do fluxo em disco. Ele é gravado em paralelo com a distribuição OTT — não é necessário um serviço de gravação separado — e é reproduzido pelas mesmas URL da transmissão ao vivo; a diferença está apenas nos parâmetros de consulta (DVR: arquivo do fluxo).

Modos de distribuição

A distribuição progressiva de MPEG-TS por HTTP é habilitada pela configuração «Serviço HTTP» (valor Live): transmissão contínua do fluxo de transporte original em uma única resposta HTTP.

A distribuição segmentada é controlada pela configuração «Serviço HLS» (valores conforme a interface):

Peering / HLS

Segmentação simples. O modo destina-se à transferência do fluxo entre nós Perfect Streamer: o nó distribuidor entrega HLS sobre MPEG-TS e o nó receptor se conecta com uma entrada do tipo HLS. As legendas WebVTT e o DRM não estão disponíveis neste modo, e a gravação DVR não é configurável.

OTT / HLS

Segmentação otimizada para a partida rápida dos players na transmissão OTT (a carga de CPU é maior). O HLS é distribuído sobre MPEG-TS; aplica-se o alinhamento dos segmentos pelo GOP (Segmentador).

OTT / LL-HLS / DASH

Distribuição sobre CMAF: o fluxo forma segmentos fMP4, sobre os quais são entregues MPEG-DASH e Low-Latency HLS. Com a configuração «Chunks MPEG-TS HLS legados» habilitada (habilitada por padrão), é adicionalmente distribuído o HLS convencional sobre MPEG-TS; desabilitá-la economiza disco e CPU. MPEG-DASH e Low-Latency HLS estão disponíveis somente neste modo.

O Low-Latency HLS divide a playlist de mídia em segmentos parciais (parts): o player inicia a reprodução sem aguardar o segmento completo; são aplicados o recarregamento bloqueante da playlist e a dica de pré-carregamento. A duração-alvo da parte é dada pela configuração «Duração-alvo da parte LL (ms)» (configuração avançada; 500 ms por padrão, aplicada em tempo de execução, deve ser menor que o intervalo mínimo do chunk). Para uma latência baixa precisa, o manifesto DASH contém a vinculação do tempo de mídia ao UTC, e os segmentos CMAF carregam marcas de tempo do produtor.

Nota

O empacotamento CMAF transporta apenas as faixas de áudio AAC e AC-3; as faixas em outros codecs são descartadas, e um alerta é emitido a respeito (Alertas (alerter)).

Segmentador

Nos modos OTT o fluxo é analisado pelas tabelas PAT/PMT e pelos quadros-chave, e os segmentos são cortados segundo o critério de partida rápida dos players. O corte é controlado pelas configurações «Intervalo mín. do chunk (s)» e «Intervalo máx. do chunk (s)»: a análise começa pelo intervalo mínimo e, se o ponto de corte não for encontrado, o segmento é encerrado à força pelo máximo.

«Segmentos alinhados pelo GOP» (habilitado por padrão; vigora no modo OTT / HLS) — o segmentador alinha as fronteiras dos segmentos pelos pontos de acesso aleatório e distingue o IDR do quadro I comum. Para fontes com closed-GOP cada segmento começa garantidamente por SPS/PPS/IDR — um ponto de entrada completo; a «cauda» do GOP anterior é removida. Isso elimina o quadro preto na partida das sessões VOD e coloca a distribuição em conformidade com os requisitos do HLS (RFC 8216). O tipo da estrutura GOP da fonte é visível pelas métricas do analisador (Análises aprofundadas). Devido ao alinhamento, a duração real do segmento pode exceder o intervalo mínimo — a duração-alvo declarada na playlist reflete o máximo real.

URL e autorização

A distribuição é atendida pelo servidor HTTP de streaming do nó (Servidor HTTP de streaming). A URL é construída conforme o esquema:

http://host:port/hls/<fluxo>/<login>/<senha>/index.m3u8
http://host:port/hls/<fluxo>/<login>          — autorização por token
http://host:port/hls/<fluxo>/                 — autorização por IP

Em lugar de /hls/ são colocados /dash/, /llhls/ ou /http/; para os pacotes adaptativos — /hls/adaptive/ e análogos (Pacotes adaptativos). <fluxo> é o identificador do fluxo ou o nome definido pela configuração «Nome do fluxo na URL». O acesso não autorizado é proibido: os logins e as permissões dos clientes são configurados na interface web (Usuários / Logins).

Os modelos de URL prontos, com os modos de distribuição vigentes, são exibidos na janela de estatísticas do fluxo — seção «URL de entrega», com botão de cópia (Estatísticas do fluxo). As sessões de cliente ativas são vistas na tela «Clientes» (Clientes).

HTTP/3 (QUIC)

O servidor HTTP de streaming é capaz de entregar as rotas OTT (HLS, DASH, LL-HLS, MPEG-TS over HTTP) sobre QUIC. O HTTP/3 é habilitado nas configurações do servidor HTTP de streaming (Servidor HTTP de streaming); o certificado utilizado é o mesmo do HTTPS, mas não é obrigatório habilitar o próprio HTTPS — o QUIC escuta separadamente e lê os arquivos do certificado diretamente. São justamente eles que são necessários: sem o certificado e a chave, o listener HTTP/3 não sobe.

Os clientes de navegador passam para o QUIC pelo anúncio padrão Alt-Svc: o anúncio é emitido mediante solicitação explícita do cliente — pelo parâmetro ?h3 na URL master. Se a conexão QUIC não se estabelecer (porta UDP fechada, certificado não confiável), o cliente permanece de forma transparente no HTTPS — a transmissão não é interrompida. As requisições administrativas são atendidas somente por TCP. O Low-Latency HLS e o DASH sobre QUIC são entregues de forma incremental — as partes seguem para o cliente à medida que ficam prontas.

Legendas WebVTT

A configuração «Legendas de teletexto em WebVTT» (habilitada por padrão, vigora nos modos OTT) converte as legendas DVB Teletext / DVB Subtitling do fluxo de entrada em faixas WebVTT: na playlist master HLS é acrescentada uma faixa de legendas e, no manifesto DASH, um conjunto de adaptação de texto. A presença de legendas na fonte é vista nas informações de mídia da janela de estatísticas. As legendas são arquivadas no DVR em paralelo com os segmentos de mídia e ficam disponíveis na reprodução do arquivo; elas não são criptografadas pela proteção DRM. Para diagnóstico serve a configuração «Registrar mensagens de legendas» (configuração avançada).

Pacotes adaptativos

O pacote adaptativo reúne vários fluxos OTT de um mesmo canal com taxas de bits diferentes sob uma única playlist master HLS ou manifesto DASH — o próprio player alterna entre as variantes conforme a banda disponível.

O pacote é criado como um fluxo do tipo «Adaptativo» (Novo fluxo, editor do pacote — Pacote adaptativo). Os participantes são fluxos SPTS com o modo OTT habilitado: OTT / HLS para o HLS adaptativo sobre MPEG-TS, OTT / LL-HLS / DASH para o DASH e o Low-Latency HLS adaptativos. Para cada participante é possível definir a taxa de bits manualmente; com o valor 0 é usada a taxa de bits medida.

As URL master do pacote são construídas pelos esquemas /hls/adaptive/, /dash/adaptive/, /llhls/adaptive/ com as mesmas variantes de autorização. O acesso concedido a um cliente para um pacote adaptativo se estende automaticamente a todos os fluxos nele contidos.

Proteção de conteúdo (DRM)

A distribuição OTT do fluxo pode ser criptografada. A criptografia é executada uma única vez, no momento da formação do segmento: a distribuição ao vivo e o arquivo DVR recebem os mesmos dados criptografados; o arquivo é mantido em disco de forma criptografada. As configurações estão reunidas na seção «Proteção de conteúdo» da aba «OTT»; a aplicação de qualquer uma delas reinicia a distribuição OTT do fluxo.

Modos (campo «DRM», valores conforme a interface):

HLS AES-128

Criptografia de segmento inteiro dos segmentos TS; a descriptografia é executada por qualquer player HLS padrão. Exige «Serviço HLS» = OTT / HLS.

CENC cenc (DASH), CENC cbcs (DASH)

Criptografia por quadro segundo o MPEG Common Encryption (ISO/IEC 23001-7) — esquema cenc (AES-CTR) ou cbcs (AES-CBC por padrões de blocos, ecossistema Apple FairPlay). Exigem o modo OTT / LL-HLS / DASH com a distribuição de chunks TS desabilitada; a distribuição ocorre somente por MPEG-DASH.

Qualquer modo de proteção exige o «Serviço HTTP» desligado — a distribuição progressiva passa ao largo da criptografia. Uma combinação incompatível de configurações é rejeitada pelo servidor com a indicação do motivo.

Chaves e entrega:

  • «Chave de conteúdo (32 hex)» é a chave de criptografia (para o AES-128 estático e para o CENC). «ID da chave (CENC KID)» é o identificador da chave CENC; com o campo vazio, o identificador é derivado de forma determinística do identificador do fluxo.

  • «Entrega da chave» (AES-128, valores conforme a interface): Built-in (PSS serves the key) — o próprio servidor entrega a chave por uma URL de sessão com a mesma autorização dos segmentos; External key server — a tag de chave na playlist aponta para a «URI da chave (EXT-X-KEY)» e a entrega interna é desabilitada. Para o CENC o servidor não fornece a chave aos players — a entrega das chaves é executada pela infraestrutura de DRM (servidores de licença).

  • Rotação de chaves (somente AES-128): «Origem da chave» = Derived (rotating), «Segredo da rotação» (não menos de 16 caracteres) e «Janela da chave (minutos)». A chave de cada janela é calculada a partir do segredo por uma função irreversível; o arquivo DVR é reproduzido através de qualquer número de rotações — o número da janela é recuperado pelo horário de gravação do segmento.

Aviso

A troca da «identidade de chave» do fluxo — da chave de conteúdo, do segredo ou das configurações de rotação — torna ilegível o arquivo criptografado gravado anteriormente; a interface web solicita a confirmação de tais alterações. As chaves são mantidas na configuração do servidor em texto aberto — restrinja o acesso aos arquivos de configuração e aos backups.

DVR: arquivo do fluxo

A gravação é habilitada na aba «OTT», seção «DVR» (visível nos modos OTT):

«Armazenamento DVR»

O armazenamento no qual o arquivo é gravado (Armazenamentos DVR). O valor «Nenhum» significa gravação desligada.

«Retenção (horas)»

A profundidade do arquivo do fluxo, de 1 hora a 90 dias. Os segmentos mais antigos são removidos pela limpeza regular.

«Mínimo protegido (horas)»

O limiar inferior de proteção: a limpeza nunca remove gravações mais recentes que esse valor, mesmo em caso de falta de espaço em disco.

A gravação começa automaticamente assim que o fluxo passa ao estado operacional. A desvinculação do armazenamento interrompe a gravação (os arquivos permanecem em disco, a reprodução do arquivo cessa); na troca de armazenamento a gravação recomeça do zero, e os arquivos não são transferidos. As alterações destrutivas são confirmadas pela interface web com a caixa de diálogo «Confirmar alterações DVR».

Armazenamentos DVR

Os armazenamentos são configurados na tela «Armazenamentos DVR» (Armazenamentos DVR). Para cada um são definidos o caminho do diretório (não alterável após a criação), o limite de utilização do disco em porcentagem e — nas configurações avançadas — o intervalo de limpeza, o adiamento e a porção de corte em caso de saturação, a reserva emergencial de espaço e a histerese. Recomenda-se um armazenamento por disco: vários armazenamentos em um disco comum concorrem pelo espaço livre. A remoção de um armazenamento da configuração não apaga os arquivos do disco.

A limpeza do arquivo atua em vários níveis:

  • por profundidade — segmentos mais antigos que o valor «Retenção (horas)» de cada fluxo;

  • por espaço — quando o limite de utilização do disco é excedido de forma persistente, os segmentos mais antigos são removidos proporcionalmente em todos os fluxos, porém nunca os mais recentes que o mínimo protegido;

  • emergencial — em caso de falta crítica de espaço, a gravação é interrompida até a restauração do espaço livre;

  • a limpeza de arquivos órfãos dentro dos arquivos dos fluxos em gravação é executada automaticamente; os diretórios de arquivo remanescentes de fluxos excluídos são removidos somente de forma manual — pelo botão «Limpar arquivos órfãos» na tela «Monitor de DVR» (Monitor de DVR).

O estado dos armazenamentos e dos fluxos em gravação — preenchimento, volume do arquivo, latências de gravação e de leitura, tarefas de limpeza ativas — é exibido na mesma tela «Monitor de DVR». O arquivo de um fluxo isolado pode ser apagado de forma irreversível pelo botão «Apagar arquivo DVR» na janela de estatísticas do fluxo; a gravação, nesse caso, prossegue.

Reprodução do arquivo (VOD)

O arquivo é reproduzido pelas mesmas URL da transmissão ao vivo HLS / DASH — a diferença está apenas nos parâmetros de consulta:

t=<tempo>

O início da janela VOD (tempo Unix, segundos). t=0 — desde o início do arquivo. A presença do parâmetro t habilita o modo VOD.

d=<segundos>

A duração da janela VOD. Sem o parâmetro (ou com d=0) — até o momento atual. Vigora somente em conjunto com t.

epg=<tempo>

VOD pela programação: o servidor localiza o evento de EPG ativo no momento indicado e toma o seu início e a sua duração como fronteiras da janela. Exige a vinculação do fluxo a uma fonte de EPG — os campos «Fonte EPG» e «Canal EPG» na aba «Fluxo» (Modificação do fluxo, Gerador EIT); os parâmetros t e d são, nesse caso, ignorados. Para um catálogo de programas basta à interface o horário do evento — as fronteiras exatas serão calculadas pelo servidor.

Particularidades da reprodução:

  • As fronteiras da janela são normalizadas: uma solicitação anterior ao início do arquivo é ajustada para o primeiro segmento disponível; uma janela integralmente fora do arquivo retorna uma playlist vazia, porém válida.

  • A playlist HLS de VOD é fechada (com a marca de encerramento); o manifesto DASH é estático. As interrupções de gravação no DASH são representadas por períodos separados — os players avançam através da fronteira sem configurações especiais.

  • Se o cliente alcançar a fronteira direita da janela, os segmentos faltantes são entregues a partir da memória ao vivo do fluxo — sem redirecionamentos nem nova autorização.

  • Uma sessão VOD aberta protege a sua janela da limpeza regular até o encerramento da sessão; a limpeza emergencial e o mínimo protegido têm prioridade.

  • As legendas WebVTT são reproduzidas também no arquivo (Legendas WebVTT).

  • Os pacotes adaptativos suportam os mesmos parâmetros de VOD. No manifesto DASH entram somente as variantes com armazenamento DVR vinculado; na playlist master HLS entram todas as variantes, porém as variantes sem arquivo respondem com erro à solicitação de arquivo, e o player as ignora.