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: