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: архив потока).
Изменение настроек OTT, DVR и защиты контента работающего потока перезапускает только OTT-раздачу и запись архива: входы и выходы потока (UDP, SRT и другие) продолжают работать без перерыва, аптайм потока не сбрасывается. Новые сегменты после изменения, как и прежде, начинаются с ключевого кадра. «Хранение (часы)», «Защищённый минимум (часы)» и «Целевая длительность LL-части (ms)» применяются на лету, без перезапуска. Настройки, меняющие сам транспортный поток (имя сервиса, программа, фильтры PID, исправления PAT/PMT/PCR, источник EPG), по-прежнему переподнимают входы и выходы потока.
Режимы раздачи¶
Прогрессивная раздача 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 слушает отдельно и читает файлы сертификата напрямую. Нужны именно они: без сертификата и ключа слушатель HTTP/3 не поднимется.
Браузерные клиенты переходят на 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-раздачу потока, а его входы и выходы работают без перерыва (OTT и DVR).
Режимы (поле «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-архив воспроизводится через любое число ротаций — номер окна восстанавливается по времени записи сегмента.
Предупреждение
Смена ключевых параметров шифрования потока (ключа контента, секрета или настроек ротации) делает ранее записанный зашифрованный архив нечитаемым; веб-интерфейс запрашивает подтверждение таких изменений. Ключи хранятся в конфигурации сервера в открытом виде — ограничивайте доступ к файлам конфигурации и резервным копиям.
Предупреждение
DASH: смена схемы делает архив нечитаемым. Манифест DVR в MPEG-DASH
ссылается для всего архива на один сегмент инициализации, и этот сегмент
всегда отдаётся в текущем состоянии потока. Если на потоке с архивом сменить
режим «DRM» (например, CENC cbcs (DASH) на CENC cenc (DASH)), часть
архива, записанную до смены, плеер расшифровать не сможет; воспроизводится
только то, что записано после неё. По той же причине записанная ранее часть
архива перестаёт воспроизводиться по DASH, когда у источника меняются кодек
или разрешение. Меняйте схему защиты на потоке, архив
которого вам больше не нужен, либо сразу после смены сотрите архив потока
(Статистика потока) — он начнёт накапливаться заново.
DVR: архив потока¶
Запись включается на вкладке «OTT», секция «DVR» (видна в режимах OTT):
- «Хранилище DVR»
Хранилище, в которое пишется архив (Хранилища DVR). Значение «Нет» — запись выключена.
- «Хранение (часы)»
Глубина архива потока, от 1 часа до 90 суток. Более старые сегменты удаляются регулярной очисткой.
- «Защищённый минимум (часы)»
Нижний порог защиты: очистка никогда не удаляет записи моложе этого значения, даже при нехватке места на диске.
Запись начинается автоматически, как только поток переходит в рабочее состояние. Отвязка от хранилища останавливает запись (файлы остаются на диске, воспроизведение архива прекращается); при смене хранилища запись начинается заново, файлы не переносятся. Деструктивные изменения веб-интерфейс подтверждает диалогом «Подтвердите изменения DVR».
Хранилища DVR¶
Хранилища настраиваются на экране «Хранилища DVR»
(Хранилища DVR). Для каждого задаются путь к каталогу
(в интерфейсе после создания не меняется; пишется без завершающего
/), предел использования диска в процентах, а в
дополнительных настройках — интервал очистки, отсрочка и порция обрезки
при переполнении и гистерезис. Поле «Аварийный запас места, GiB» зарезервировано:
значение сохраняется, но на работу не влияет — остановки записи по свободному
месту нет, диск удерживает в пределе очистка по месту. На один диск
рекомендуется одно хранилище: несколько хранилищ на общем диске
конкурируют за свободное место. Удаление хранилища из конфигурации не
удаляет файлы с диска.
Очистка архива работает на нескольких уровнях:
по глубине — сегменты старше значения «Хранение (часы)» каждого потока;
по месту — при устойчивом превышении предела использования диска удаляются самые старые сегменты пропорционально по всем потокам, но не моложе защищённого минимума; очистка охватывает и архив TS, и архив MP4 (DASH и LL-HLS);
очистка осиротевших файлов внутри архивов записываемых потоков выполняется автоматически; каталоги архивов, оставшиеся от удалённых потоков, удаляются только вручную — кнопкой «Очистить осиротевшие архивы» на экране «Монитор DVR» (Монитор DVR).
Если места не хватает и после очистки — весь архив моложе защищённого минимума, — новые сегменты не записываются, а уже записанный архив сохраняется. После нескольких неудачных записей подряд (по умолчанию трёх) поднимается алерт с кодом 29 (Каталог кодов алертов); он снимается после первой успешной записи.
Если одна запись индекса архива повреждена (например, после отключения
питания), при запуске она пропускается, а остальной архив загружается; теряется
только этот фрагмент, а журнал службы сообщает N damaged record(s) skipped.
Состояние хранилищ и записываемых потоков (заполнение, объём архива, задержки записи и чтения, активные задачи очистки) отображается на том же экране «Монитор 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 входят все варианты, но варианты без архива на запрос архива отвечают ошибкой, и плеер их пропускает.