Skip to content

Validador de streams

media.probe.stream_validator

La validación de streams es un mecanismo que permite determinar si un stream HLS o MPEG-DASH es adecuado para su procesamiento mediante la comprobación de su integridad y de la corrección de su empaquetado. Comprueba las playlists o los manifiestos y los segmentos de medios asociados, sin decodificar el stream ni validar la conformidad a nivel de códec.

El paquete stream-validator proporciona acceso a este mecanismo mediante la línea de comandos. Funciona independientemente del servidor y no requiere licencia. Sus mensajes están en inglés.

Instalación

Se admiten Ubuntu 22.04 o posterior y Debian 12 o posterior en amd64 o arm64. Ejecute los comandos como root; deben estar instalados curl y los certificados CA:

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

El paquete instala ambos comandos y la guía en inglés en /usr/share/doc/stream-validator/README.md.

Docker

La imagen flussonic/stream-validator admite amd64 y arm64. El punto de entrada predeterminado ejecuta la validación HLS. Para DASH, seleccione dash_validator con --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

En los ejemplos, server es el nombre de host o la dirección IP de su streamer. Dentro de un contenedor, localhost se refiere al propio contenedor. En Docker Desktop, use host.docker.internal para acceder a un servicio del host.

HLS

La validación HLS captura una emisión HLS en directo, actualiza las playlists y descarga segmentos de inicialización y medios de forma predeterminada. Comprueba la latencia LL-HLS, la disponibilidad de partes y el intervalo de partes independientes relacionado con el GOP. La estimación basada en PART-HOLD-BACK no mide la latencia de la cámara a la pantalla.

Ejecución

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

Opciones

Opción Función Predeterminado
URL, -u, --url URL de HLS; también se acepta como argumento posicional. —
-t, --capture Duración de la captura en directo. 20
--request-timeout Tiempo de espera de cada solicitud HTTP. 10
--target-latency Objetivo de latencia para el diagnóstico. 2
--preload-timeout Plazo de sondeo de la parte PRELOAD-HINT. 2.5
--playlists-only Comprueba playlists sin descargar medios ni sondear partes/preload en tiempo real. desactivado
-h, --help Muestra la ayuda. —

--timeout sigue siendo un alias de --capture. El comando interno anterior se llamaba validator.

Códigos de diagnóstico

  • LL-DISABLED — la baja latencia está desactivada.
  • TARGETDURATION-INFLATED — TARGETDURATION está sobredimensionado.
  • PART-TARGET-LARGE — PART-TARGET es demasiado grande.
  • SPARSE-INDEPENDENT-PARTS — hay pocas partes independientes debido a un GOP largo.

MPEG-DASH

La validación DASH comprueba el MPD y descarga segmentos de inicialización y medios. Detecta desalineaciones de pistas ABR, errores temporales y deriva del borde en directo entre audio y vídeo.

Modos

  • auto — Automático: determina el modo según MPD@type.
  • --static — Comprueba una vez una presentación VOD estática.
  • --live — Actualiza un MPD dinámico durante la captura y comprueba huecos y solapamientos entre actualizaciones de SegmentTimeline.

Ejecución

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

Opciones

Opción Función Predeterminado
-u, --url URL del MPD; también se acepta como primer argumento posicional. —
-t, --capture Duración de la captura en directo; no se aplica al modo estático. 20
-p, --poll Intervalo de consulta del MPD en directo; se limita al rango interno permitido. minimumUpdatePeriod o 2 s
--request-timeout Tiempo de espera HTTP en todos los modos de validación y durante la detección de modo. 10
--static, --live Fuerza el modo en lugar de detectarlo automáticamente. automático
-h, --help Muestra la ayuda. —

--timeout es un alias de --capture, no un tiempo de espera HTTP. Al migrar desde la utilidad interna dash-validate, sustituya su opción HTTP --timeout por --request-timeout.

Resultado

El informe muestra errores y advertencias con su ubicación. Códigos de salida:

  • 0 — validación correcta, incluso con solo advertencias.
  • 1 — errores de validación o inicio.
  • 2 — argumentos CLI incorrectos.

Las duraciones se expresan en segundos y admiten números fraccionarios positivos.

Qué sigue

Para configurar el servidor, consulte: