---
title: OTT e DVR
url: https://doc2.pstreamer.tv/pt/manual/streamer/ott_dvr.html
lang: pt-BR
product: Perfect Streamer
version: 2.0.2.362
---

# 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](../webui/streams.md#webui-stream-editor)) e está disponível somente para fluxos SPTS; um programa do multiplex é extraído para um fluxo SPTS pelo demultiplexador ([Demultiplexador](demux.md#streamer-demux)).

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)](../meshwork/alerts.md#meshwork-alerts)).

## 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](analyzer.md#streamer-analyzer-deep)). 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](../webui/administration.md#webui-http-server)). 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](../webui/configure.md#webui-users)).

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](../webui/streams.md#webui-stream-stats)). As sessões de cliente ativas são vistas na tela «Clientes» ([Clientes](../webui/monitor.md#webui-clients)).

## 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](../webui/administration.md#webui-http-server)); 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](../webui/streams.md#webui-stream-new), editor do pacote — [Pacote adaptativo](../webui/streams.md#webui-adaptive-bundle)). 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](../webui/administration.md#webui-dvr-storages)). Para cada um são definidos o caminho do diretório (não alterável na interface após a criação; escrito sem `/` final), 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](../webui/monitor.md#webui-dvr-monitor)).

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](spts.md#streamer-spts-modify), [Gerador EIT](epg/eit.md#streamer-epg-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.
