Live stream¶
media.live.streams
Live stream в Sapsan — именованный стрим, который объединяет приём медиа, его обработку и доставку потребителям. Медиа поступает и обрабатывается по мере появления новых кадров. У стрима есть конфигурация и текущее состояние. Под одним именем могут идти:
- Видео — несколько качеств.
- Звук — дорожки на разных языках.
- Субтитры — текстовые дорожки.
Все они остаются дорожками одного стрима.
На отдельном сервере live stream управляет работающим медиапайплайном. В central тот же стрим представлен как кластерный объект: его функции могут выполняться несколькими серверами одновременно.
Стрим на одном сервере¶
Локальный экземпляр стрима — менеджер пайплайна. Он связывает компоненты обработки, передаёт им настройки и следит за их жизненным циклом. Состав пайплайна определяется конфигурацией и ролью этого сервера в обслуживании стрима.
| Компонент | За что отвечает |
|---|---|
| Вход | Получает медиа от источника или принимает публикацию. Управляет соединением, повторными подключениями и выбором резервного источника. |
| Транскодер | Декодирует и кодирует медиа по настройкам стрима, формирует нужные кодеки и лестницу качеств. |
| Процессинг | Выполняет настроенную обработку: извлечение субтитров, создание миниатюр, обработку метаданных и событий. Задачи вроде распознавания речи могут работать по уже записанному архиву. |
| Сегментер | Собирает фрагменты и части фрагментов, поддерживает живое окно для сегментной выдачи. |
| Запись DVR | Передаёт подготовленные фрагменты подсистеме архива и отслеживает состояние записи. |
| Пуши | Отправляют медиа на настроенные адреса. У каждого направления есть своё состояние соединения и повторных подключений. |
| Ретрансляторы и подписчики | Получают кадры или фрагменты стрима для протокольной выдачи зрителям и другим серверам. |
Данные расходятся по нескольким ветвям: один и тот же результат обработки может одновременно поступать в архив, в пуши и на выдачу зрителям. Число зрителей не требует отдельного захвата и транскодирования для каждого из них. Сегментная выдача читает подготовленные фрагменты, а протоколы непрерывной передачи получают поток кадров или транспортных пакетов.
Менеджер принимает изменения конфигурации, обновляет компоненты и собирает их состояние. Переподключение входа, восстановление пуша и перезапуск транскодера относятся к жизненному циклу локального пайплайна. Изменение параметров или восстановление компонента может прерывать соответствующую часть обработки.
Подробнее о компонентах:
Кластерный стрим в central¶
Central хранит общую конфигурацию стрима: какой источник принимать и какие функции выполнять. Оператор меняет её через API central. Лейаутер определяет, на каких стримерах и в каких ролях будет обслуживаться стрим. Central формирует и доставляет каждому серверу конфигурацию его части работы.
Так один кластерный стрим получает несколько локальных представлений. На сервере захвата работает пайплайн приёма и обработки. На DVR-стримере тот же стрим принимает готовое медиа для записи. На эдже он обслуживает выдачу зрителям, при необходимости используя кэш. Каждый сервер выполняет функции, назначенные ему конфигурацией.
| Уровень | Что описывает |
|---|---|
| Кластерный стрим | Общую конфигурацию и имя стрима, сохраняющиеся при изменении его размещения. |
| Назначение | Какой стример выполняет конкретную роль: захват, запись архива или раздачу. |
| Локальный экземпляр | Работающий на сервере пайплайн с доставленной ему конфигурацией. |
Распределение позволяет одновременно задействовать несколько серверов для разных функций одного стрима. В частности, приём и транскодирование могут выполняться на сервере с подходящим оборудованием, архив — записываться на выделенном хранилище, а выдача — обслуживаться эджами рядом со зрителями. Возможные роли и правила их назначения описаны в размещении стримов.
Пример распределения¶
У стрима news включены транскодирование и запись архива. Для него используются следующие серверы:
- Сервер A — захват: принимает источник и формирует лестницу качеств.
- Сервер B — запись: получает готовое медиа от A и пишет архив.
- Серверы C и D — раздача: получают живое медиа от A, читают архив с B и обслуживают зрителей. При включённом кэше архива повторные обращения могут обслуживаться локально.
Оператор управляет одним стримом news. На серверах работают разные части его обработки и доставки. Для добавления эджа не требуется заводить отдельный операторский стрим с другим именем.
Изменения и отказы¶
При изменении размещения central доставляет обновлённые конфигурации затронутым стримерам. Имя и общая конфигурация кластерного стрима сохраняются; состав локальных экземпляров и выполняемые ими функции могут меняться.
Локальное восстановление и кластерное переразмещение решают разные задачи. Стример сам переподключает свой вход или переключается на настроенный резерв. Решение перенести работу на другой сервер принимает лейаутер по состоянию кластера и правилам размещения.
При потере связи с central уже работающий стример продолжает исполнять последнюю применённую конфигурацию. Доставка новых настроек и переразмещение требуют работающей плоскости управления. Состояние отдельных компонентов и серверов следует смотреть вместе: исправная выдача с одного эджа сама по себе не подтверждает, что запись архива продолжается на DVR-стримере.