Skip to content

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

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

Note

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

Шаг 1. Настройки в конфигурационном файле Flussonic

Добавьте в файл /etc/flussonic/flussonic.conf следующую конфигурацию:

vod ad_vod {
  storage /opt/flussonic/priv;
}
stream example_stream {
  input fake://fake;
  on_play http://localhost/ad_backend.json;
}
file_processor { 
    path /opt/flussonic/priv; 
}

Перегрузите конфигурацию после редактирования, чтобы изменения применились:

service flussonic reload

В этой конфигурации используются следующие директивы:

  • vod задает VOD-локацию. В примере это /opt/flussonic/priv, и там уже есть ролик bunny.mp4, который мы будем использовать далее в этой инструкции. Когда вы будете использовать реальные ролики, добавляйте их в свою директорию VOD.

    Danger

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

  • on_play задает путь к авторизационному бэкенду. Мы создадим его на шаге 3.

  • file_processor задает директорию, куда file_processor будет добавлять подготовленные файлы (см. следующий шаг).

Шаг 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/example_stream | 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
---

  }]
}

Теперь можно передать файл 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.

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

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

Note

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

Врезка рекламы по 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"]
    }
}

Здесь используются следующие параметры:

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

При такой конфигурации 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"]
    }
}

Здесь используются следующие параметры:

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

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

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

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

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

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

Note

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

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

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