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
). Это полезно в случаях, когда информацию о таргетинге нужно обновлять в зависимости от программы и пользователя, например во время трансляции спортивных мероприятий (критерии таргетинга могут быть неизвестны заранее).