Skip to content

Валидатор потоков

media.probe.stream_validator

Валидатор потоков — механизм инструментальной проверки HLS и MPEG-DASH, позволяющий определить, годится ли поток для обработки. Он проверяет целостность потока и корректность его упаковки на уровне плейлистов или манифестов и связанных с ними медиасегментов. Декодирование потока и проверка корректности кодирования на уровне кодека не выполняются.

Пакет stream-validator предоставляет доступ к этому механизму через командную строку. Он работает независимо от сервера и не требует лицензии. Сообщения выводятся на английском языке.

Установка

Поддерживаются Ubuntu 22.04 и новее и Debian 12 и новее на amd64 или arm64. Выполните команды от root; в системе должны быть установлены curl и 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

Пакет устанавливает обе команды и руководство на английском языке в /usr/share/doc/stream-validator/README.md.

Docker

Образ flussonic/stream-validator поддерживает amd64 и arm64. По умолчанию запускается проверка HLS. Для проверки DASH укажите --entrypoint dash_validator.

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

В примерах server — имя или IP-адрес вашего стримера. Внутри контейнера localhost указывает на сам контейнер. В Docker Desktop для доступа к сервису на хосте используйте host.docker.internal.

HLS

Проверка HLS захватывает живую HLS-раздачу, обновляет плейлисты и по умолчанию загружает init-сегменты и медиаданные. Проверяет задержку LL-HLS и доступность частей, а также интервал независимых частей, связанный с GOP. Оценка задержки по PART-HOLD-BACK не является измерением задержки от камеры до экрана.

Запуск

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

Параметры

Параметр Назначение Умолчание
URL, -u, --url URL HLS; также принимается позиционным аргументом. —
-t, --capture Длительность наблюдения живого потока. 20
--request-timeout Таймаут HTTP-запроса. 10
--target-latency Целевая задержка для диагностики. 2
--preload-timeout Таймаут проверки части из PRELOAD-HINT. 2.5
--playlists-only Проверять плейлисты без загрузки медиаданных и real-time проверки частей/preload. выключен
-h, --help Показать справку. —

--timeout остаётся алиасом --capture. Прежняя внутренняя команда называлась validator.

Коды диагностики

  • LL-DISABLED — низкая задержка отключена.
  • TARGETDURATION-INFLATED — завышен TARGETDURATION.
  • PART-TARGET-LARGE — слишком велик PART-TARGET.
  • SPARSE-INDEPENDENT-PARTS — независимые части редки из-за длинного GOP.

MPEG-DASH

В режиме DASH валидатор проверяет MPD и загружает медиаданные. Он ищет несогласованность ABR-дорожек, ошибки временной шкалы и дрейф живого края аудио/видео.

Режимы

  • auto — Автоматически: режим определяется по MPD@type.
  • --static — Одна проверка статического представления VOD.
  • --live — Повторное чтение динамического MPD в течение окна наблюдения: проверяются изменения SegmentTimeline, разрывы и наложения.

Запуск

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

Параметры

Параметр Назначение Умолчание
-u, --url URL MPD; также принимается первым позиционным аргументом. —
-t, --capture Длительность live-наблюдения; в static не применяется. 20
-p, --poll Интервал опроса live MPD; ограничивается внутренним допустимым диапазоном. minimumUpdatePeriod или 2 с
--request-timeout Таймаут HTTP-запроса во всех режимах проверки и при определении режима. 10
--static, --live Принудительный режим вместо автоматического. автоматически
-h, --help Показать справку. —

--timeout — алиас --capture, а не таймаут HTTP. При переходе с внутренней утилиты dash-validate замените её параметр HTTP-таймаута --timeout на --request-timeout.

Результат

Отчёт содержит ошибки и предупреждения с местом обнаружения. Коды завершения:

  • 0 — успешная проверка, в том числе с предупреждениями.
  • 1 — ошибки проверки или запуска.
  • 2 — некорректные аргументы CLI.

Значения времени задаются в секундах, допускаются положительные дробные числа.

Что дальше

Настройка выдачи описана в разделах: