OTT и DVR

Подсистема OTT раздаёт потоки по протоколам на базе HTTP: HLS (на MPEG-TS), MPEG-DASH и Low-Latency HLS (на CMAF — фрагментированном MP4), а также MPEG-TS over HTTP. Поддерживаются HTTPS и HTTP/3 (QUIC). Раздача включается на вкладке «OTT» редактора потока (Настроить поток) и доступна только SPTS-потокам; программа мультиплекса выделяется в SPTS-поток демультиплексором (Демультиплексор).

DVR — постоянный архив потока на диске. Он пишется параллельно с OTT-раздачей — отдельная служба записи не требуется — и воспроизводится через те же URL, что и живое вещание; отличие только в параметрах запроса (DVR: архив потока).

Режимы раздачи

Прогрессивная раздача MPEG-TS по HTTP включается настройкой «Сервис HTTP» (значение Live): непрерывная передача исходного транспортного потока в одном HTTP-ответе.

Сегментная раздача управляется настройкой «Сервис HLS» (значения — как в интерфейсе):

Peering / HLS

Простая разбивка на сегменты. Режим предназначен для передачи потока между узлами Perfect Streamer: раздающий узел отдаёт HLS на MPEG-TS, принимающий подключается входом типа HLS. Субтитры WebVTT и DRM в этом режиме недоступны, запись DVR не настраивается.

OTT / HLS

Разбивка, оптимизированная для быстрого старта проигрывателей при OTT-вещании (нагрузка на CPU выше). Раздаётся HLS на MPEG-TS; действует выравнивание сегментов по GOP (Сегментер).

OTT / LL-HLS / DASH

Раздача на CMAF: поток формирует fMP4-сегменты, поверх которых отдаются MPEG-DASH и Low-Latency HLS. При включённой настройке «Устаревшие чанки MPEG-TS HLS» (включена по умолчанию) дополнительно раздаётся обычный HLS на MPEG-TS; её отключение экономит диск и CPU. MPEG-DASH и Low-Latency HLS доступны только в этом режиме.

Low-Latency HLS дробит медиаплейлист на частичные сегменты (parts): плеер начинает воспроизведение, не дожидаясь полного сегмента; применяются блокирующая перезагрузка плейлиста и подсказка предзагрузки. Целевая длительность части задаётся настройкой «Целевая длительность LL-части (ms)» (дополнительная настройка; по умолчанию 500 мс, применяется на лету, должна быть меньше минимального интервала чанка). Для точной низкой задержки манифест DASH содержит привязку медиавремени к UTC, а CMAF-сегменты несут метки времени продюсера.

Примечание

Упаковка CMAF переносит только звуковые дорожки AAC и AC-3; дорожки в других кодеках отбрасываются, о чём поднимается оповещение (Оповещения (алертер)).

Сегментер

В режимах OTT поток анализируется по таблицам PAT/PMT и ключевым кадрам, и сегменты нарезаются по критерию быстрого старта проигрывателей. Нарезка управляется настройками «Мин. интервал чанка (с)» и «Макс. интервал чанка (с)»: анализ начинается с минимального интервала, а если точка нарезки не найдена — сегмент принудительно завершается по максимальному.

«Сегменты, выровненные по GOP» (включено по умолчанию; действует в режиме OTT / HLS) — сегментер выравнивает границы сегментов по точкам случайного доступа и различает IDR и обычный I-кадр. Для источников с closed-GOP каждый сегмент гарантированно начинается с SPS/PPS/IDR — полной точки входа; «хвост» предыдущего GOP вырезается. Это устраняет чёрный кадр на старте VOD-сессий и приводит раздачу в соответствие требованиям HLS (RFC 8216). Тип GOP-структуры источника виден по метрикам анализатора (Углублённые анализы). Из-за выравнивания фактическая длительность сегмента может превышать минимальный интервал — заявляемая в плейлисте целевая длительность отражает фактический максимум.

URL и авторизация

Раздачу обслуживает потоковый HTTP-сервер узла (Потоковый HTTP-сервер). URL строится по схеме:

http://host:port/hls/<поток>/<логин>/<пароль>/index.m3u8
http://host:port/hls/<поток>/<логин>          — авторизация по токену
http://host:port/hls/<поток>/                 — авторизация по IP

Вместо /hls/ подставляется /dash/, /llhls/ или /http/; для адаптивных наборов — /hls/adaptive/ и аналогичные (Адаптивные наборы). <поток> — идентификатор потока либо имя, заданное настройкой «Имя потока в URL». Неавторизованный доступ запрещён: логины и разрешения клиентов настраиваются в веб-интерфейсе (Пользователи / Логины).

Готовые шаблоны URL с текущими режимами раздачи показываются в окне статистики потока — секция «URL доставки» с кнопкой копирования (Статистика потока). Активные клиентские сессии видны на экране «Клиенты» (Клиенты).

HTTP/3 (QUIC)

Потоковый HTTP-сервер умеет отдавать OTT-маршруты (HLS, DASH, LL-HLS, MPEG-TS over HTTP) поверх QUIC. HTTP/3 включается в настройках потокового HTTP-сервера (Потоковый HTTP-сервер); сертификат используется тот же, что и для HTTPS, поэтому HTTPS должен быть настроен.

Браузерные клиенты переходят на QUIC по стандартному объявлению Alt-Svc: объявление выдаётся по явному запросу клиента — параметром ?h3 на master-URL. Если QUIC-соединение не устанавливается (закрыт UDP-порт, недоверенный сертификат), клиент прозрачно остаётся на HTTPS — вещание не прерывается. Административные запросы обслуживаются только по TCP. Low-Latency HLS и DASH поверх QUIC отдаются инкрементально — части уходят клиенту по мере готовности.

Субтитры WebVTT

Настройка «Субтитры телетекста в WebVTT» (включена по умолчанию, действует в режимах OTT) преобразует субтитры DVB Teletext / DVB Subtitling входного потока в дорожки WebVTT: в master-плейлист HLS добавляется дорожка субтитров, в манифест DASH — текстовый набор. Наличие субтитров в источнике видно в информации о медиа в окне статистики. Субтитры архивируются в DVR параллельно с медиасегментами и доступны при воспроизведении архива; защитой DRM они не шифруются. Для диагностики служит настройка «Логировать сообщения субтитров» (дополнительная настройка).

Адаптивные наборы

Адаптивный набор объединяет несколько OTT-потоков одного канала с разными битрейтами под одним master-плейлистом HLS или манифестом DASH — плеер сам переключается между вариантами по пропускной способности.

Набор создаётся как поток типа «Адаптивный» (Новый поток, редактор набора — Адаптивный набор). Участники — SPTS-потоки с включённым режимом OTT: OTT / HLS для адаптивного HLS на MPEG-TS, OTT / LL-HLS / DASH для адаптивных DASH и Low-Latency HLS. Для каждого участника можно задать битрейт вручную; значение 0 — берётся измеренный битрейт.

Master-URL набора строятся по схемам /hls/adaptive/, /dash/adaptive/, /llhls/adaptive/ с теми же вариантами авторизации. Доступ, разрешённый клиенту к адаптивному набору, автоматически распространяется на все входящие в него потоки.

Защита контента (DRM)

OTT-раздачу потока можно шифровать. Шифрование выполняется один раз, в момент формирования сегмента: живая раздача и DVR-архив получают одни и те же зашифрованные данные; архив хранится на диске в зашифрованном виде. Настройки собраны в секции «Защита контента» вкладки «OTT»; применение любой из них перезапускает OTT-раздачу потока.

Режимы (поле «DRM», значения — как в интерфейсе):

HLS AES-128

Полносегментное шифрование TS-сегментов; расшифровку выполняет любой стандартный HLS-плеер. Требует «Сервис HLS» = OTT / HLS.

CENC cenc (DASH), CENC cbcs (DASH)

Пофреймовое шифрование MPEG Common Encryption (ISO/IEC 23001-7) — схема cenc (AES-CTR) либо cbcs (паттерновый AES-CBC, экосистема Apple FairPlay). Требуют режим OTT / LL-HLS / DASH с отключённой раздачей TS-чанков; раздача — только по MPEG-DASH.

Любой режим защиты требует выключенного «Сервиса HTTP» — прогрессивная раздача идёт мимо шифрования. Несовместимую комбинацию настроек сервер отклоняет с указанием причины.

Ключи и доставка:

  • «Ключ контента (32 hex)» — ключ шифрования (для статического AES-128 и CENC). «ID ключа (CENC KID)» — идентификатор ключа CENC; пустое поле — идентификатор детерминированно выводится из идентификатора потока.

  • «Доставка ключа» (AES-128, значения — как в интерфейсе): Built-in (PSS serves the key) — сервер сам отдаёт ключ по сессионному URL с той же авторизацией, что и сегменты; External key server — тег ключа в плейлисте указывает на «URI ключа (EXT-X-KEY)», встроенная доставка отключается. Для CENC сервер ключ плеерам не выдаёт — доставка ключей выполняется DRM-инфраструктурой (лицензионные серверы).

  • Ротация ключей (только AES-128): «Источник ключа» = Derived (rotating), «Секрет ротации» (не менее 16 символов) и «Окно ключа (минуты)». Ключ каждого окна вычисляется из секрета необратимой функцией; DVR-архив воспроизводится через любое число ротаций — номер окна восстанавливается по времени записи сегмента.

Предупреждение

Смена «ключевой идентичности» потока — ключа контента, секрета или настроек ротации — делает ранее записанный зашифрованный архив нечитаемым; веб-интерфейс запрашивает подтверждение таких изменений. Ключи хранятся в конфигурации сервера в открытом виде — ограничивайте доступ к файлам конфигурации и резервным копиям.

DVR: архив потока

Запись включается на вкладке «OTT», секция «DVR» (видна в режимах OTT):

«Хранилище DVR»

Хранилище, в которое пишется архив (Хранилища DVR). Значение «Нет» — запись выключена.

«Хранение (часы)»

Глубина архива потока, от 1 часа до 90 суток. Более старые сегменты удаляются регулярной очисткой.

«Защищённый минимум (часы)»

Нижний порог защиты: очистка никогда не удаляет записи моложе этого значения, даже при нехватке места на диске.

Запись начинается автоматически, как только поток переходит в рабочее состояние. Отвязка от хранилища останавливает запись (файлы остаются на диске, воспроизведение архива прекращается); при смене хранилища запись начинается заново, файлы не переносятся. Деструктивные изменения веб-интерфейс подтверждает диалогом «Подтвердите изменения DVR».

Хранилища DVR

Хранилища настраиваются на экране «Хранилища DVR» (Хранилища DVR). Для каждого задаются путь к каталогу (после создания не меняется), предел использования диска в процентах и — в дополнительных настройках — интервал очистки, отсрочка и порция обрезки при переполнении, аварийный запас места и гистерезис. На один диск рекомендуется одно хранилище: несколько хранилищ на общем диске конкурируют за свободное место. Удаление хранилища из конфигурации не удаляет файлы с диска.

Очистка архива работает на нескольких уровнях:

  • по глубине — сегменты старше значения «Хранение (часы)» каждого потока;

  • по месту — при устойчивом превышении предела использования диска удаляются самые старые сегменты пропорционально по всем потокам, но не моложе защищённого минимума;

  • аварийная — при критической нехватке места запись останавливается до восстановления свободного места;

  • очистка осиротевших файлов внутри архивов записываемых потоков выполняется автоматически; каталоги архивов, оставшиеся от удалённых потоков, удаляются только вручную — кнопкой «Очистить осиротевшие архивы» на экране «Монитор DVR» (Монитор DVR).

Состояние хранилищ и записываемых потоков — заполнение, объём архива, задержки записи и чтения, активные задачи очистки — отображается на том же экране «Монитор DVR». Архив отдельного потока можно безвозвратно удалить кнопкой «Стереть архив DVR» в окне статистики потока; запись при этом продолжается.

Воспроизведение архива (VOD)

Архив воспроизводится через те же URL, что и живое вещание HLS / DASH, — отличается только параметрами запроса:

t=<время>

Начало VOD-окна (Unix-время, секунды). t=0 — от начала архива. Наличие параметра t включает VOD-режим.

d=<секунды>

Длительность VOD-окна. Без параметра (или d=0) — до текущего момента. Действует только вместе с t.

epg=<время>

VOD по программе передач: сервер находит EPG-событие, активное в указанный момент, и берёт его начало и длительность как границы окна. Требует привязки потока к источнику EPG — поля «Источник EPG» и «Канал EPG» на вкладке «Поток» (Модификация потока, Генератор EIT); параметры t и d при этом игнорируются. Для каталога передач интерфейсу достаточно времени события — точные границы вычислит сервер.

Особенности воспроизведения:

  • Границы окна нормализуются: запрос раньше начала архива подтягивается к первому доступному сегменту; окно целиком вне архива возвращает пустой, но валидный плейлист.

  • HLS-плейлист VOD — закрытый (с признаком завершения); DASH-манифест — статический. Разрывы записи в DASH оформляются отдельными периодами — плееры перематывают через границу без специальных настроек.

  • Если клиент доходит до правой границы окна, недостающие сегменты отдаются из живой памяти потока — без переадресаций и повторной авторизации.

  • Открытая VOD-сессия защищает своё окно от регулярной очистки до закрытия сессии; аварийная очистка и защищённый минимум имеют приоритет.

  • Субтитры WebVTT воспроизводятся и в архиве (Субтитры WebVTT).

  • Адаптивные наборы поддерживают те же параметры VOD. В манифест DASH попадают только варианты с привязанным хранилищем DVR; в master-плейлист HLS входят все варианты, но варианты без архива на запрос архива отвечают ошибкой, и плеер их пропускает.