Валидатор потоков¶
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.
Значения времени задаются в секундах, допускаются положительные дробные числа.
Что дальше¶
Настройка выдачи описана в разделах: