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âmetrothabilita 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 comt.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
tedsã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.