Алгоритм вещания
Описание
Данный документ описывает процесс формирования вещания и получения конечного плейлиста для приставки Raspberry Pi.
Процесс работы
Регистрация и внесение устройства на медиасервер
зарегистрировать устройство в нашем сервисе Balena и получить его
uuidвнутри сервисасоздать сущность
Boxво вкладке "Приставки" на медиасервере.в форме создания новой приставки нужно указать его
uuid, а далее выбрать для негоLocationиз уже существующих, либо создать новуюLocationво вкладке "Локации".убедиться, что у локации указан корректный
Master, либо указать его в случае, если мы создали новую локацию. Если мастер с нужной рекламой и контентом отсутствует, нужно его создать
Создание мастера
перейти во вкладку "Мастеры" и создать новый мастер. Указать его имя, порядок (опционально, служит для сортировки по умолчанию внутри вкладки). В форме также можно задать
MasterTypeи нужныеBroadcast Package(также опционально).перейти во вкладку редактирования мастера с помощью соответствующего контрола в правой части таблицы. На данной странице создать нужное количество
AdvertisementsиContentsс нужными настройками: датами показа, количеством показов за 6 часов и т. д.указать только что созданный мастер внутри
Locationдля устройства, зарегистрированого на прошлом шаге
Запрос плейлиста
Устройство раз в пять минут отправляет GET-запрос на специальный эндпойнт бэкенда, передавая свой
uuidв параметрах запроса.
Формирование ответа
Бэкенд по
uuidнаходит устройство в базе.По устройству определяется локация.
По локации находится мастер.
На основе данных из мастера формируется плейлист с видеофайлами.
Возвращение плейлиста
Бэкенд отправляет сформированный плейлист устройству Raspberry Pi.
Устройство использует полученный плейлист для воспроизведения реклам и контента.
Спецификация эндпойнта
Метод: GET
URL: /api/get-playlist-by-box-uuid/:uuid
Параметры запроса:
Параметр | Тип | Описание |
|---|---|---|
uuid | UUID | Уникальный идентификатор устройства |
Пример запроса:
Пример ответа:
Описание алгоритма формирования плейлиста
Функция формирования плейлиста принимает uuid устройства и возвращает объект следующей структуры:
Алгоритм формирования плейлиста
По
uuidустройства находится мастер, на основе которого будет строиться плейлист.Ищутся все ролики, присутствующие в данном мастере.
Ролики фильтруются по дате:
Если
startAtравноnull, ролик считается доступным с минимально возможной даты.Если
stopAtравноnull, ролик считается доступным до максимально возможной даты.Все ролики, не соответствующие временным ограничениям, отбрасываются.
Оставшиеся ролики передаются в функцию формирования плейлиста.
Формируется шестичасовой плейлист по следующему правилу:
плейлист должен состоять из рекламных и контентных блоков. В блоке может быть несколько видео
перед каждым рекламным блоком вставляется двухсекундная рекламная отбивка.
плейлист состоит из чередующихся рекламных и контентных блоков.
длительность одного цикла (реклама + контент) составляет примерно 4 минуты.
алгоритм подбирает длительности блоков в зависимости от пропорции рекламного контента. Если реклама занимает 50% всего времени (3 часа из 6), рекламный блок длится 2 минуты, контентный — 2 минуты. Если реклама занимает, например, 75% времени, рекламный блок длится 3 минуты, контентный — 1 минуту. И так по аналогии.
при формировании плейлиста каждому элементу плейлиста (каждому видео) устанавливается num - его порядковый номер в плейлисте, и contentType - число, обозначающее тип видео - реклама это, контент или отбивка. Данные поля нужны для просмотра плейлиста через другой веб-сервис.