---
title: OTT и DVR
url: https://doc2.pstreamer.tv/ru/manual/streamer/ott_dvr.html
lang: ru
product: Perfect Streamer
version: 2.0.2.362
---

# OTT и DVR

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

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; дорожки в других кодеках отбрасываются, о чём поднимается оповещение ([Оповещения (алертер)](../meshwork/alerts.md#meshwork-alerts)).

## Сегментер

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

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

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

Раздачу обслуживает потоковый HTTP-сервер узла ([Потоковый HTTP-сервер](../webui/administration.md#webui-http-server)). URL строится по схеме:

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

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

Готовые шаблоны URL с текущими режимами раздачи показываются в окне статистики потока — секция «URL доставки» с кнопкой копирования ([Статистика потока](../webui/streams.md#webui-stream-stats)). Активные клиентские сессии видны на экране «Клиенты» ([Клиенты](../webui/monitor.md#webui-clients)).

## HTTP/3 (QUIC)

Потоковый HTTP-сервер умеет отдавать OTT-маршруты (HLS, DASH, LL-HLS, MPEG-TS over HTTP) поверх QUIC. HTTP/3 включается в настройках потокового HTTP-сервера ([Потоковый HTTP-сервер](../webui/administration.md#webui-http-server)); сертификат используется тот же, что и для 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 — плеер сам переключается между вариантами по пропускной способности.

Набор создаётся как поток типа «Адаптивный» ([Новый поток](../webui/streams.md#webui-stream-new), редактор набора — [Адаптивный набор](../webui/streams.md#webui-adaptive-bundle)). Участники — 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](../webui/administration.md#webui-dvr-storages)). Для каждого задаются путь к каталогу (в интерфейсе после создания не меняется; пишется без завершающего `/`), предел использования диска в процентах и — в дополнительных настройках — интервал очистки, отсрочка и порция обрезки при переполнении, аварийный запас места и гистерезис. На один диск рекомендуется одно хранилище: несколько хранилищ на общем диске конкурируют за свободное место. Удаление хранилища из конфигурации не удаляет файлы с диска.

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

- по глубине — сегменты старше значения «Хранение (часы)» каждого потока;
- по месту — при устойчивом превышении предела использования диска удаляются самые старые сегменты пропорционально по всем потокам, но не моложе защищённого минимума;
- аварийная — при критической нехватке места запись останавливается до восстановления свободного места;
- очистка осиротевших файлов внутри архивов записываемых потоков выполняется автоматически; каталоги архивов, оставшиеся от удалённых потоков, удаляются только вручную — кнопкой «Очистить осиротевшие архивы» на экране «Монитор DVR» ([Монитор DVR](../webui/monitor.md#webui-dvr-monitor)).

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

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

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

**`t=<время>`**
  Начало VOD-окна (Unix-время, секунды). `t=0` — от начала архива. Наличие параметра `t` включает VOD-режим.
**`d=<секунды>`**
  Длительность VOD-окна. Без параметра (или `d=0`) — до текущего момента. Действует только вместе с `t`.
**`epg=<время>`**
  VOD по программе передач: сервер находит EPG-событие, активное в указанный момент, и берёт его начало и длительность как границы окна. Требует привязки потока к источнику EPG — поля «Источник EPG» и «Канал EPG» на вкладке «Поток» ([Модификация потока](spts.md#streamer-spts-modify), [Генератор EIT](epg/eit.md#streamer-epg-eit)); параметры `t` и `d` при этом игнорируются. Для каталога передач интерфейсу достаточно времени события — точные границы вычислит сервер.

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

- Границы окна нормализуются: запрос раньше начала архива подтягивается к первому доступному сегменту; окно целиком вне архива возвращает пустой, но валидный плейлист.
- HLS-плейлист VOD — закрытый (с признаком завершения); DASH-манифест — статический. Разрывы записи в DASH оформляются отдельными периодами — плееры перематывают через границу без специальных настроек.
- Если клиент доходит до правой границы окна, недостающие сегменты отдаются из живой памяти потока — без переадресаций и повторной авторизации.
- Открытая VOD-сессия защищает своё окно от регулярной очистки до закрытия сессии; аварийная очистка и защищённый минимум имеют приоритет.
- Субтитры WebVTT воспроизводятся и в архиве (Субтитры WebVTT).
- Адаптивные наборы поддерживают те же параметры VOD. В манифест DASH попадают только варианты с привязанным хранилищем DVR; в master-плейлист HLS входят все варианты, но варианты без архива на запрос архива отвечают ошибкой, и плеер их пропускает.
