Skip to content

Настройка врезки рекламы

С Flussonic вы можете настроить серверную врезку рекламы (SSAI) через авторизационный бэкенд. Рекламу можно врезать по расписанию или по меткам SCTE. Подробнее об этих способах см. Способы врезки рекламы на стороне сервера.

Note

Потоки с рекламой, врезанной с помощью Flussonic, проигрываются только по протоколам HLS и DASH.

Шаг 1. Создайте VOD-локацию

Для врезки рекламы нужно использовать только те файлы с рекламой, которые находятся в настроенной VOD-локации на сервере Flussonic. Не указывайте пути к внешним ресурсам (HTTP) и напрямую к файловой системе сервера.

Чтобы создать VOD-локацию:

  1. Перейдите на вкладку Media - VODs и нажмите +.
  2. Укажите имя локации ad_vod.
  3. Укажите путь на диске или в облаке, где будете хранить файлы с рекламой. В примере мы добавим путь /opt/flussonic/priv, и там уже есть ролик bunny.mp4, который мы будем использовать далее в этой инструкции. Когда вы будете использовать реальные ролики, добавляйте их в свою директорию VOD.

Flussonic VOD

Шаг 2. Подготовьте рекламные ролики

Перед врезкой рекламные ролики необходимо подготовить. Это можно сделать в любом видеоредакторе или с помощью API Flussonic file_processor.

Во внешнем видеоредакторе

При подготовке роликов во внешнем ПО учитывайте следующие требования:

  • Характеристики (media_info) основного и рекламного потоков должны совпадать. Параметры рекламного потока должны быть идентичны параметрам основного потока, иначе Flussonic проигнорирует рекламный ролик и не врежет его.

    Чтобы узнать media_info потока, воспользуйтесь запросом API GET /{name}/info.json

  • Значение GOP рекламного ролика должно быть равно одной секунде.

  • Первые 1-5 секунд преролла могут пропускаться, из-за особенности работы большинства HLS-плееров. В таком случае вставьте несколько чёрных кадров в начало ролика.

С помощью API Flussonic file_processor

Сначала нужно получить media_info потока, в который будете врезать рекламу. Используйте запрос API GET /{name}/info.json:

curl http://user:password@localhost/streamer/api/v3/streams/demo | jq .stats.media_info >> fp.json

Note

Заменяйте логин и пароль в командах curl на имя пользователя и пароль, которые используете для входа в интерфейс администратора.

Результат будет записан в файл fp.json. Откройте его для редактирования любым текстовым редактором и дополните следующим образом:

{
  "input_files": ["/opt/flussonic/priv/bunny.mp4"],
  "output_file": "bunny_fp",
  "filters": [{
    "group": "transcoder",
    "transcoder":

---
your media_info
---

  }]
}

Создайте file_processor:

curl -X PUT http://user:password@localhost/streamer/api/v3/file_processor -d '{"path":"ad_vod"}' -H "Content-Type: a
pplication/json"

Теперь можно передать файл fp.json в метод POST /file_processor/jobs:

curl -X POST http://user:password@localhost/streamer/api/v3/file_processor/jobs --data @fp.json --header "Content-Type: application/json"

В выводе последней команды найдите значение параметра output_file, оно будет иметь вид bunny_fp.processed.1711966939428660.mp4. Это название подготовленного рекламного ролика, который вам нужно указать в авторизационном бэкенде. Файл уже находится в VOD-локации, которую вы указали для file_processor.

Warning

Подготовка может занять некоторое время. Сначала на диске будет создан файл с расширением .tmp. Не удаляйте и не перемещайте его. Дождитесь, пока file_processor закончит работу и появится итоговый файл.

Шаг 3. Авторизационный бэкенд для врезки рекламы

Чтобы использовать врезку рекламы SSAI, реализуйте авторизационный бэкенд. Ваш авторизационный бекенд должен вернуть структуру JSON, описанную в схеме API.

Как сделать авторизационный бэкенд:

  1. Ниже приведены примеры JSON для врезки рекламы по SSAI двумя способами. Поскольку в потоке demo, который мы создадим на следующем шаге, нет меток SCTE, то используйте вариант с врезкой по расписанию.

    Сохраните JSON в файл в каталоге /opt/flussonic/wwwroot/ на вашем сервере Flussonic, например под названием ad_backend.json.

    Note

    Эти структуры JSON не выполняют авторизацию как таковую, т.к. не содержат логики проверки токенов. В таком виде их можно примерять только для тестирования врезки рекламы. Чтобы действительно выполнять авторизацию сессий проигрывания, следуйте инструкции на станице Авторизация.

  2. На вкладке Media - Streams в Flussonic Admin UI создайте поток demo с источником fake://fake

    Live stream create

  3. Откройте вкладку Auth в профиле потока, выберите Authentication type -> custom и укажите адрес авторизационного бэкенда http://localhost/ad_backend.json.

    Auth

Врезка рекламы по SSAI по расписанию


{
    "ad_inject": {
        "v": 2,
        "preroll": ["ad_vod/bunny_fp.processed.1711966939428660.mp4"],
        "midroll_interval": 180,
        "midroll": ["ad_vod/bunny_fp.processed.1711966939428660.mp4", "ad_vod/bunny_fp.processed.1711966939428660.mp4"]
    }
}

При такой конфигурации Flussonic Media Server покажет ролик ad_vod/bunny_fp.processed.1711966939428660.mp4 перед просмотром, а затем раз в три минуты (180 секунд) будет показывать перечисленные мидроллы в том порядке, в котором они указаны в списке midroll.

Врезка рекламы по SSAI по меткам SCTE-35


{
    "ad_inject": 
    {
        "v": 1,
        "preroll": ["ad_vod/bunny_fp.processed.1711966939428660.mp4"],
        "midroll_insert_by": "splicing",
        "midroll": ["ad_vod/bunny_fp.processed.1711966939428660.mp4", "ad_vod/bunny_fp.processed.1711966939428660.mp4"]
    }
}

При такой конфигурации Flussonic Media Server покажет ролик ad_vod/bunny_fp.processed.1711966939428660.mp4 перед просмотром, а затем при появлении меток SCTE-35 Flussonic будет показывать все перечисленные мидроллы до окончания рекламного блока. Ролики проигрываются циклически в том порядке, в котором они указаны в списке midroll.

Пояснения к параметрам

  • "v": 1 — врезка рекламы в виде отдельных сегментов, или "v": 2 — врезка рекламы в сегменты основного потока.
  • "preroll": "ad_vod/bunny_fp.processed.1711966939428660.mp4" — путь к VOD-локации с прероллом. Замените имя файла на то, которое вернул скрипт на шаге 2.
  • "midroll_insert_by": "splicing" — метод врезки рекламы по SCTE-меткам, или "midroll_insert_by": "interval" — метод врезки рекламы через равные интервалы времени.
  • "midroll_interval": 180 — интервал в секундах для показа мидроллов, если "midroll_insert_by": "interval".
  • "midroll": ["ad_vod/bunny_fp.processed.1711966939428660.mp4", "ad_vod/bunny_fp.processed.1711966939428660.mp4"] — список мидроллов для врезки. Замените имена файлов на те, которые вернул скрипт на шаге 2.

Шаг 4. Проверьте работы врезки

Убедитесь, что всё работает, проиграв поток по HLS или DASH. Например, воспользуйтесь ссылкой Embed на вкладке Output потока.

https://FLUSSONIC-IP/demo/embed.html

Если все в порядке, перед трансляцией потока demo вы увидите клип Big Buck Bunny.

Такие плагины, как AdBlock, могут блокировать рекламные ролики. Если что-то пошло не так, попробуйте отключить плагины.

Note

Плеер на вкладке Overview в профиле потока не будет проигрывать рекламу. Не используйте его для проверки этой функции.

Отслеживание событий о показе рекламы зрителям

Собирайте статистику по показам рекламы, настроив логирование события ad_inject с помощью event_sink.