Skip to content

Stream validator

media.probe.stream_validator

Stream validation is a mechanism for determining whether an HLS or MPEG-DASH stream is suitable for processing by checking its integrity and packaging correctness. It checks playlists or manifests and the associated media segments, without decoding the stream or validating codec-level conformance.

The stream-validator package provides command-line access to this mechanism. It runs independently of the server and requires no license. Its output is in English.

Installation

Supported platforms: Ubuntu 22.04 or later and Debian 12 or later, on amd64 or arm64. Run the following commands as root; curl and CA certificates must be installed:

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

The package installs both commands and the English guide at /usr/share/doc/stream-validator/README.md.

Docker

The flussonic/stream-validator image supports amd64 and arm64. Its default entrypoint runs the HLS check. For DASH, select dash_validator with --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

In these examples, server is the hostname or IP address of your streaming server. Inside a container, localhost refers to the container itself. On Docker Desktop, use host.docker.internal to reach a service running on the host.

HLS

The HLS check captures a live HLS presentation, refreshes playlists, and fetches init segments and media by default. It checks LL-HLS latency and part availability, and the independent-part interval related to GOP. The PART-HOLD-BACK latency estimate does not measure camera-to-screen latency.

Run

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

Options

Option Purpose Default
URL, -u, --url HLS URL; also accepted as a positional argument. —
-t, --capture Live capture duration. 20
--request-timeout HTTP request timeout. 10
--target-latency Diagnostic latency target. 2
--preload-timeout Deadline for probing a PRELOAD-HINT part. 2.5
--playlists-only Check playlists without fetching media or probing real-time parts/preload. disabled
-h, --help Show help. —

--timeout remains an alias for --capture. The previous internal command name was validator.

Diagnostic codes

  • LL-DISABLED — low latency is disabled.
  • TARGETDURATION-INFLATED — TARGETDURATION is inflated.
  • PART-TARGET-LARGE — PART-TARGET is too large.
  • SPARSE-INDEPENDENT-PARTS — independent parts are sparse because the GOP is long.

MPEG-DASH

The DASH check validates an MPD and fetches init and media segments. It detects ABR track misalignment, timeline errors, and audio/video live-edge drift.

Modes

  • auto — Automatic: detect the mode from MPD@type.
  • --static — Validate a static VOD presentation once.
  • --live — Refresh a dynamic MPD during the capture window, checking SegmentTimeline updates for gaps and overlaps.

Run

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

Options

Option Purpose Default
-u, --url MPD URL; also accepted as the first positional argument. —
-t, --capture Live capture duration; does not apply to static mode. 20
-p, --poll Live MPD poll interval; clamped to an internal allowed range. minimumUpdatePeriod or 2 s
--request-timeout HTTP request timeout in all validation modes and during mode detection. 10
--static, --live Force the mode instead of automatic detection. automatic
-h, --help Show help. —

--timeout is an alias for --capture, not an HTTP timeout. When migrating from the internal dash-validate utility, replace its HTTP --timeout option with --request-timeout.

Result

The report lists errors and warnings with their locations. Exit codes:

  • 0 — validation passed, including warnings only.
  • 1 — validation or startup errors.
  • 2 — invalid CLI arguments.

Durations are in seconds and accept positive fractional numbers.

Next steps

See the server configuration guides: