Skip to content

Validador de streams

media.probe.stream_validator

A validação de streams é um mecanismo que permite determinar se um stream HLS ou MPEG-DASH é adequado para processamento por meio da verificação de sua integridade e da correção de seu empacotamento. Verifica as playlists ou os manifestos e os segmentos de mídia associados, sem decodificar o stream nem validar a conformidade no nível do codec.

O pacote stream-validator fornece acesso a esse mecanismo pela linha de comando. Funciona independentemente do servidor e não exige licença. Suas mensagens estão em inglês.

Instalação

São compatíveis Ubuntu 22.04 ou posterior e Debian 12 ou posterior em amd64 ou arm64. Execute os comandos como root; curl e os certificados CA devem estar instalados:

curl -fsSL https://apt.flussonic.com/repo/master/dev.key -o /etc/apt/trusted.gpg.d/flussonic-dev.gpg
echo 'deb http://apt.flussonic.com/branch/sapsan/master repo/' > /etc/apt/sources.list.d/stream-validator.list
apt-get update
apt-get install stream-validator

O pacote instala os dois comandos e o manual em inglês em /usr/share/doc/stream-validator/README.md.

Docker

A imagem flussonic/stream-validator é compatível com amd64 e arm64. O ponto de entrada padrão executa a validação HLS. Para DASH, selecione dash_validator com --entrypoint.

docker run --rm flussonic/stream-validator:latest \
  http://server:5080/streaming/v/tv1/index.m3u8 --capture 30
docker run --rm --entrypoint dash_validator flussonic/stream-validator:latest \
  http://server:5080/streaming/v/tv1/Manifest.mpd --capture 30

Nos exemplos, server é o nome de host ou endereço IP do seu streamer. Dentro de um contêiner, localhost se refere ao próprio contêiner. No Docker Desktop, use host.docker.internal para acessar um serviço no host.

HLS

A validação HLS captura uma transmissão HLS ao vivo, atualiza playlists e baixa segmentos de inicialização e mídia por padrão. Verifica a latência LL-HLS, a disponibilidade das partes e o intervalo de partes independentes relacionado ao GOP. A estimativa por PART-HOLD-BACK não mede a latência da câmera até a tela.

Execução

hls_validator --capture 30 --target-latency 2 http://server:5080/streaming/v/tv1/index.m3u8

Opções

Opção Função Padrão
URL, -u, --url URL de HLS; também aceito como argumento posicional. —
-t, --capture Duração da captura ao vivo. 20
--request-timeout Tempo limite de cada requisição HTTP. 10
--target-latency Meta de latência para diagnóstico. 2
--preload-timeout Prazo de sondagem da parte PRELOAD-HINT. 2.5
--playlists-only Verifica playlists sem baixar mídia nem sondar partes/preload em tempo real. desativado
-h, --help Mostra a ajuda. —

--timeout continua sendo um alias de --capture. O comando interno anterior se chamava validator.

Códigos de diagnóstico

  • LL-DISABLED — a baixa latência está desativada.
  • TARGETDURATION-INFLATED — TARGETDURATION está superdimensionado.
  • PART-TARGET-LARGE — PART-TARGET é muito grande.
  • SPARSE-INDEPENDENT-PARTS — há poucas partes independentes devido a um GOP longo.

MPEG-DASH

A validação DASH verifica o MPD e baixa segmentos de inicialização e mídia. Detecta desalinhamento de pistas ABR, erros na linha do tempo e desvio da borda ao vivo entre áudio e vídeo.

Modos

  • auto — Automático: determina o modo por MPD@type.
  • --static — Valida uma apresentação VOD estática uma vez.
  • --live — Atualiza um MPD dinâmico durante a captura e verifica lacunas e sobreposições entre atualizações de SegmentTimeline.

Execução

dash_validator --live --capture 30 http://server:5080/streaming/v/tv1/Manifest.mpd

Opções

Opção Função Padrão
-u, --url URL do MPD; também aceito como primeiro argumento posicional. —
-t, --capture Duração da captura ao vivo; não se aplica ao modo estático. 20
-p, --poll Intervalo de consulta do MPD ao vivo; limitado ao intervalo interno permitido. minimumUpdatePeriod ou 2 s
--request-timeout Tempo limite HTTP em todos os modos de validação e durante a detecção de modo. 10
--static, --live Força o modo em vez da detecção automática. automático
-h, --help Mostra a ajuda. —

--timeout é um alias de --capture, não um tempo limite HTTP. Ao migrar do utilitário interno dash-validate, substitua a opção HTTP --timeout por --request-timeout.

Resultado

O relatório mostra erros e avisos com sua localização. Códigos de saída:

  • 0 — validação bem-sucedida, inclusive somente com avisos.
  • 1 — erros de validação ou inicialização.
  • 2 — argumentos CLI inválidos.

As durações são em segundos e aceitam números fracionários positivos.

Próximos passos

Para configurar o servidor, veja: