Вставьте рекламу, используя перенаправление сегмента

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

Выберите протокол потоковой передачи:

Предпосылки

Прежде чем продолжить, необходимо настроить событие прямой трансляции для типа перенаправления «Динамическая вставка рекламы (DAI)» и профилей кодирования. Чтобы настроить событие прямой трансляции, выберите один из следующих способов:

После настройки события прямой трансляции извлеките профили кодирования события из пользовательского интерфейса или API Менеджера рекламы, вызвав метод DaiEncodingProfileService.getDaiEncodingProfilesByStatement .

Получить поток контента

Когда пользователь выбирает событие прямой трансляции, клиентское приложение отправляет запрос на трансляцию в Google Ad Manager. В ответе на трансляцию приложение извлекает идентификатор сеанса Google DAI и метаданные для включения в запрос манифеста трансляции.

В следующем примере идентификатор сеанса Google DAI передается манипулятору манифеста:

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

При обработке запроса на воспроизведение видеоконтента сохраняйте идентификатор сеанса Google DAI и CUSTOM_ASSET_KEY из запроса для подготовки к сшивке рекламы.

Определите сегменты рекламных пауз и вставьте разрывы

При обработке каждого варианта манифеста определите теги EXT-X-CUE-IN и EXT-X-CUE-OUT в вашем потоке, указывающие начало и конец рекламной паузы.

Замените теги EXT-X-CUE-IN и EXT-X-CUE-OUT на элементы EXT-X-DISCONTINUITY чтобы клиентский видеоплеер мог переключаться между контентом и рекламой.

Следующий пример манифеста заменяет теги EXT-X-CUE-IN и EXT-X-CUE-OUT :

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

В следующем примере показан замененный манифест:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

Рекламные сегменты Google DAI не зашифрованы. Если ваш контент зашифрован, снимите шифрование, вставив элемент EXT-X-KEY:METHOD=NONE перед первым рекламным сегментом каждой рекламной паузы. В конце рекламной паузы снова включите шифрование, вставив соответствующий элемент EXT-X-KEY .

Отслеживайте время начала, продолжительность и индекс предстоящей рекламной паузы.

Генерация токена на основе хэш-кода аутентификации сообщений (HMAC)

Каждый запрос сегмента, выполненный с использованием обслуживания модуля перенаправления сегмента, должен включать подписанный HMAC токен для аутентификации.

Рассчитывайте этот токен один раз за рекламную паузу и распространяйте его на все сеансы потоковой передачи.

Соберите параметры токена

Чтобы заполнить тело токена, соберите следующую информацию из текущей рекламной паузы:

Параметры токена
custom_asset_key Необходимый Пользовательский ключ актива прямой трансляции от Google Ad Manager.
cust_params Необязательный Пользовательские параметры таргетинга. См. cust_params .
exp Необходимый Временная метка истечения срока действия текущего токена в секундах.
network_code Необходимый Сетевой код Менеджера рекламы 360.
pod_id Необходимый Идентификатор рекламной паузы. Целое число, начинающееся с 1 Для каждой рекламной паузы этот идентификатор увеличивается на единицу.

Это значение должно быть одинаковым для всех пользователей, просматривающих одну и ту же рекламную паузу в текущем событии.

pd Обязательно, за исключением событий с включенными рекламными паузами ограниченной длительности. Длительность рекламной паузы в миллисекундах. Обозначается как ad_pod_duration .
scte35 Необязательный Сигнал SCTE-35, закодированный в Base64. Google DAI всегда копирует сигнал в создаваемую рекламную паузу, даже если он неверен. Если сигнал неверен, вы получите сообщение в HTTP-заголовке X-Ad-Manager-Dai-Warning в ответе, и сигнал всё равно продолжит создавать рекламную паузу. Подробнее об использовании сигнала SCTE-35 в DAI см. в разделе «Поддерживаемые рекламные маркеры» .

Создать строку токена

Чтобы создать строку токена, перечислите все параметры в алфавитном порядке в формате NAME = VALUE , разделив каждую пару имя-значение символом тильды ~ .

Для неиспользуемых необязательных параметров используйте пустую строку в качестве значения или полностью удалите параметр.

Следующий пример форматирует строку токена:

custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE

Генерация подписи HMAC

Подпись HMAC — это хэш SHA-256 строки токена в шестнадцатеричном формате. Секретный ключ — это ключ аутентификации HMAC, связанный с вашим событием прямой трансляции в Google Ad Manager.

Строка токена подписи

После генерации подписи HMAC добавьте подпись к строке токена в следующем формате:

~hmac=HMAC_SIGNATURE

Кодировать строку токена

Чтобы передать токен как параметр URL, закодируйте URL для безопасности.

В следующем примере создается подписанный и закодированный токен HMAC, где неиспользуемые необязательные параметры представляют собой пустые строки:

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~cust_params=~exp=1489680000~network_code=6062~pd=180000~pod_id=5~scte35=~hmac=86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~cust_params%3D~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~scte35%3D~hmac%3D86d7e5f8c96fe4c83141d764df376ae14a0e2066f2e6b2ccfb9e1e2d3c869a88

В следующем примере создается подписанный и закодированный токен HMAC без неиспользуемых необязательных параметров:

custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g3~exp=1489680000~network_code=6062~pd=180000~pod_id=5

Secret key:
A7490591290583E4B93189DEE7E287C299FC686872ABC7ADC9F9F536443505F

HMAC signature:
6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Signed token:
custom_asset_key=iYdOkYZdQ1KFULXSN0Gi7g~exp=1489680000~network_code=6062~pd=180000~pod_id=5~hmac=6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

URL-encoded signed token:
custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D6062~pd%3D180000~pod_id%3D5~hmac%3D6a8c44c72e4718ff63ad2284edf2a8b9e319600b430349d31195c99b505858c9

Создание URL-адресов сегментов объявлений

Замените каждый сегмент контента между тегами EXT-X-DISCONTINUITY URL-адресом, указывающим на метод сегмента рекламного модуля.

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

https://dai.google.com/linear/pods/v1/seg/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=AD_SEGMENT_DURATION&pd=AD_BREAK_DURATION&stream_id=SESSION_ID&auth-token=HMAC

В следующем примере сегменты рекламного модуля вставляются в манифест:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/0.ts?sd=5000&so=0&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/1.ts?sd=5000&so=5000&pd=15000&stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/seg/network/
NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/profile/ENCODING_PROFILE/2.ts?sd=5000&so=10000&pd=15000&stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4

Необязательно: запланируйте рекламную паузу

Чтобы повысить заполняемость, отправьте уведомление о ранней рекламной паузе (EABN) с указанием продолжительности рекламного блока, индивидуальных параметров таргетинга и данных сигнала SCTE-35. Подробнее см. в разделе «Отправка уведомлений о ранней рекламной паузе» .