VOD¶
media.play.vod
Транспорт¶
HTTP или HTTPS; плейлисты и фрагменты передаются отдельными запросами по TCP.
Поддерживаемые кодеки¶
Зависят от выбранного протокола выдачи: HLS и DASH. Sapsan упаковывает имеющиеся дорожки; совместимость декодирования проверяйте в целевом плеере.
Sapsan хранит файлы как VOD-ассеты, ведёт их каталог в central и выдаёт их по запросу. Ассету не нужен живой источник. Управление загрузками, хранилищами, шаблонами и заданиями выполняется в консоли central.
Хранилище и загрузка¶
В конфиге стримера через central задайте именованный VOD root — каталог файлов на диске:
vod:
roots:
- name: movies
path: /srv/vod
Имя root содержит строчные латинские буквы, цифры, _ и -; имена уникальны в конфиге. Убедитесь, что процесс может читать и записывать каталог. Central получает сведения о хранилище и свободном месте из отчётов стримера.
В разделе VOD откройте Загрузки, выберите файлы и ключ ассета. Central выбирает доступное хранилище со свободным местом и выдаёт разрешение на загрузку; сами байты идут прямо на стример. Хранилища показывают доступность и ёмкость. Токены загрузки дают внешнему приложению ограниченный доступ к загрузке; отзыв токена запрещает дальнейшее использование.
Каталог и файлы¶
- Ключ: изменяемое имя, например
movies/2026/film.mp4; его префиксы образуют дерево каталога. - Asset id: постоянный идентификатор, который сохраняется при переименовании ключа.
- Ревизия: версия состава файлов; меняется при добавлении и удалении файлов.
- Файлы: видео и другие файлы одного ассета с размером, хешем и сведениями о медиа.
Файлы ассета¶
Откройте ассет в Каталоге, чтобы увидеть файлы и размещения. Доступный ассет имеет готовое размещение на доступном хранилище. Нечитаемый как медиа файл доступен только для скачивания RAW. Переименовать ключ меняет метаданные, сохраняя файлы и ссылки по Asset id; занятый ключ отклоняется.
Воспроизведение¶
В карточке файла Play открывает плеер, а HLS, DASH и RAW копируют ссылку. Пользуйтесь ссылкой central для просмотра через кластер:
| Формат | URL central |
|---|---|
| HLS | /playback/vod/<asset-id>/<file>/index.m3u8 |
| DASH | /playback/vod/<asset-id>/<file>/Manifest.mpd |
| Файл | /playback/vod/<asset-id>/<file> |
Central выбирает готовое размещение и перенаправляет клиента на стример. Нативный адрес стримера имеет вид /streaming/vod/<root>/<asset-id>/<file>/index.m3u8 (для DASH — Manifest.mpd, для скачивания — без суффикса). Не подменяйте Asset id ключом каталога. Для защищённого просмотра нужен токен, разрешающий этот ассет; отсутствие разрешения возвращает 403, отсутствие ассета или файла — 404. Без доступных размещений central возвращает 503 с Retry-After.
Копии и балансировка¶
В шаблоне ассета задайте Копии на других серверах. Значение 1 означает оригинал и одну копию на другом стримере. Шаблон без лестницы качеств позволяет копировать готовые файлы без транскодирования. Запустите задание из карточки ассета или назначьте шаблон при загрузке.
Central выбирает онлайн-стримеры с доступным VOD root, читаемым файловым журналом, включённой ролью Копирование и достаточным свободным местом. На одном стримере размещается не более одной копии ассета. Требуется размер файлов плюс резерв vod_min_free_bytes (по умолчанию 1 GiB); из подходящих хранилищ выбирается наиболее свободное. Если кандидатов нет, задание ждёт в очереди.
Копирование — отдельное задание на целевом стримере: он сам скачивает файлы по внутреннему адресу, проверяет размер и хеш и публикует копию. Копирование не занимает слот транскодирования. Отключение роли запрещает новые задания, уже запущенные продолжаются. Файлы, добавленные позже, попадут на существующие копии при следующем задании.
В таблице размещений видны оригинал и копии с ревизией и числом зрителей. Central направляет новые просмотры на готовое размещение с наименьшим числом сессий; после потери связи со стримером и истечения его liveness он исключается из выбора. Ссылка по Asset id остаётся прежней. Перенаправление не переносит уже открытое соединение: при сбое плеер должен подключиться заново.
Удаление¶
- Файл: удаляется один файл, ревизия увеличивается; удаление последнего файла удаляет ассет.
- Ассет: из каталога удаляются ассет и его файлы.
- Папка: удаляются ассеты под выбранным префиксом ключа.
Каталог меняется сразу. При недоступном хранилище физическое удаление откладывается до восстановления связи. Проверяйте состояние задания и размещений в central; наличие записи в каталоге само по себе не гарантирует готовую копию.