API для динамической вставки объявлений (DAI API) позволяет получать видеопотоки с монетизацией в случаях, когда не поддерживается IMA SDK (например, на телевизорах Smart TV). В то же время IMA SDK необходимо использовать везде, где это возможно. DAI API поддерживает все функции динамической вставки объявлений, но требуется настройка со стороны издателя.
Требования к использованию API
Задачи, за выполнение которых при использовании API отвечает издатель
- Предоставление доступа к потоку с динамически вставляемыми объявлениями через конечную точку HTTP, а также настройка обработки ответов JSON.
- Указание параметров API и пар "ключ-значение" для таргетинга.
- Добавление элементов, с которыми будут взаимодействовать пользователи (например, активных областей и значков).
- Прослушивание событий ID3 в проигрывателе. Это нужно, чтобы реализовывать элементы управления проигрывателем и сбор статистики по объявлениям (как в прямых трансляциях, так и в видео по запросу).
- Реализация таких функций, как прокрутка видео, возврат к началу рекламы и создание закладок.
- Выбор формата потоковой передачи: HLS или DASH.
Ниже описывается, как запрашивать и обрабатывать видеопотоки через API в зависимости от типа контента (видео по запросу или прямая трансляция).
Видео по запросу
API для видео по запросу следует простой процедуре, в которой первая стадия – создание потока, а последняя – подтверждение воспроизведения рекламного ролика:
-
Для получения потока отправляется HTTP-запрос POST, содержащий идентификатор источника контента (
cmsid) и идентификатор видео (vid), ключ API или токен HMAC, а также параметры таргетинга объявлений.https://dai.google.com/ondemand/v1/hls/content/<contentId>/vid/<vid>/stream -
Обрабатываются включенные в ответ данные о манифесте воспроизведения контента, субтитрах, рекламных паузах и продолжительности видео без учета рекламы.
{"content_duration": 123.451,"stream_manifest": "https://dai.google.com/.../master.m3u8","media_verification_url": "https://dai.google.com/.../media/","stream_id": "9ca0c62a-3291-4f95-986f-d1721f8b96f0","total_duration": 163.451,"valid_for": "8h0m0s","valid_until": "2018-05-16T23:21:16.558053292-07:00","ad_breaks": [...]} -
Обрабатываются данные об элементах отдельных объявлений в каждой рекламной паузе, в частности о URL перехода по клику, сопутствующих креативах и продолжительности рекламной паузы. Эта информация используется для отрисовки интерфейса.
{"clickthrough_url": "https://dai.google.com/.../videoclick/1835622921898938400","description": "Example pre-roll ad","duration": 10,"seq": 1,"title": "Example pre-roll"} -
При воспроизведении каждого объявления отправляется запрос на адрес
media_verification_urlс добавленным к этому URL значением ID3.https://dai.google.com/view/p/service/vod/stream/3647080d-c223-442e-a364-c456ee712ece/loc/CBF/network/124319096/content/2474148/vid/bbb-clear/media/
События Progress нужны, чтобы различать воспроизведение во время рекламной паузы и вне ее. В остальном они не используются для сбора статистики по объявлениям.
Чтобы выявить событие Progress, найдите в файле метаданных формата JSON идентификатор мультимедийного объекта. В поле type должно быть значение progress. С помощью событий ID3 типа Progress можно, например, блокировать элементы управления видео.
Прямые трансляции
API для прямых трансляций следует простой процедуре, в которой первая стадия – создание потока, а последняя – подтверждение воспроизведения рекламного ролика:
-
Для получения потока отправляется HTTP-запрос POST, содержащий идентификатор события, ключ API или токен HMAC, а также параметры таргетинга объявлений.
https://dai.google.com/linear/v1/hls/event/<eventid>/stream
https://dai.google.com/linear/v1/dash/event/<eventid>/stream -
Обрабатываются включенные в ответ данные о манифесте воспроизведения контента, субтитрах, рекламных паузах и продолжительности видео без учета рекламы.
{"stream_manifest": "https://dai.google.com/linear/.../master.m3u8","media_verification_url": "https://dai.google.com/linear/.../media/","metadata_url": "https://dai.google.com/linear/.../metadata","polling_frequency": 10,"stream_id": "793bf10c-2323-404d-b23b-0a529d96e651:MRN",} -
Запрашиваются метаданные объявлений – либо с заданной частотой (polling_frequency), либо отдельно для каждого идентификатора мультимедийного объекта ID3. Во втором случае такой идентификатор добавляется к URL метаданных как параметр запроса.
{"ad_breaks": {"0001127859": {"ads": 3,"duration": 30,"type": "mid"}},"ads": {"0001127859_ad2": {"ad_break_id": "0001127859","ad_id": "39135088","ad_system": "GDFP","clickthrough_url": "http://pubads.g.doubleclick.net/pcs/click?...","creative_id": "103990016608","description": "Example linear 10s ad","duration": 10,"position": 2,"title": "Example linear ad"}},"tags": {"google_0028792773": {"ad": "0001127859_ad2","ad_break_id": "0001127859","type": "firstquartile"}, ...}} -
При воспроизведении каждого объявления отправляется запрос на адрес
media_verification_urlс добавленным к этому URL значением ID3.https://dai.google.com/view/p/service/linear/stream/f0b8970b-cacb-4a9f-83ee-2ef29db47129:CBF2/loc/CBF2/network/51636543/event/sN_IYUG8STe1ZzhIIE_ksA/media/
События Progress нужны, чтобы различать воспроизведение во время рекламной паузы и вне ее. В остальном они не используются для сбора статистики по объявлениям.
Чтобы выявить событие Progress, найдите в файле метаданных формата JSON идентификатор мультимедийного объекта. В поле type должно быть значение progress. С помощью событий ID3 типа Progress можно, например, блокировать элементы управления видео.
Как с помощью DAI API узнать, когда началась или закончилась рекламная пауза в трансляции
При динамической вставке объявлений метаданные ID3 для квартилей (начало, первый квартиль, середина, третий квартиль, завершение и т. д.) добавляются в сегменты объявлений, а метаданные ID3 для событий Progress (каждая секунда) – в сегменты объявлений и рекламных пауз. При первом появлении подобного тега ID3 может активироваться событие "началась рекламная пауза". Если после этого подобные теги ID3 не появляются в течение определенного времени (например, 2,5 секунд), может активироваться событие "закончилась рекламная пауза". Теги ID3, добавленные при динамической вставке объявлений, находятся в файле метаданных формата JSON. Распознать их можно по префиксу google_.
Динамическое обновление таргетинга и/или пар "ключ-значение" в трансляции для определенного пользователя
Поле session_update_url позволяет заменить все параметры тега объявления, чтобы последующие запросы объявлений для прямой трансляции отправлялись с новыми параметрами (такой же результат достигается при помощи метода replaceAdTagParameters). Это полезно в случаях, когда информацию о таргетинге нужно обновлять в зависимости от программы и пользователя, например во время трансляции спортивных мероприятий (критерии таргетинга могут быть неизвестны заранее).