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: