Este guia aborda a configuração do manipulador de manifesto para solicitar anúncios ou segmentos de tela usando o método pod segment de anúncio.
Selecione um protocolo de streaming:
Pré-requisitos
Antes de continuar, configure um evento de transmissão ao vivo para o tipo de Inserção de anúncios dinâmicos (DAI) e perfis de codificação do redirecionamento de veiculação de pods. Para configurar um evento de transmissão ao vivo, escolha um dos seguintes métodos:
- Interface do Ad Manager:configure uma transmissão ao vivo para DAI.
- API Ad Manager:use uma biblioteca de cliente para chamar o método
LiveStreamEventService.createLiveStreamEvents. Defina o parâmetroLiveStreamEvent.dynamicAdInsertionTypecomoPOD_SERVING_REDIRECT.
Depois de configurar o evento ao vivo, recupere os perfis de codificação dele na interface ou API do Ad Manager chamando o método DaiEncodingProfileService.getDaiEncodingProfilesByStatement.
Recuperar o stream de conteúdo
Quando um usuário seleciona um evento de transmissão ao vivo, o app cliente faz uma solicitação de stream para o Google Ad Manager. Na resposta de stream, o app extrai o ID da sessão e os metadados da DAI do Google para incluir na solicitação de manifesto de stream.
O exemplo a seguir transmite um ID de sessão da DAI do Google para um manipulador de manifesto:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
Ao processar a solicitação de reprodução de conteúdo de vídeo, armazene o ID da sessão da DAI do Google e CUSTOM_ASSET_KEY da solicitação para preparar a junção de anúncios.
Identificar segmentos de intervalo de anúncio e inserir descontinuidades
Ao processar cada manifesto de variante, identifique as tags EXT-X-CUE-IN e
EXT-X-CUE-OUT no seu stream, indicando o início e o fim de um
intervalo de anúncio.
Substitua as tags EXT-X-CUE-IN e EXT-X-CUE-OUT pelos elementos EXT-X-DISCONTINUITY para que o player de vídeo do cliente alterne entre conteúdo e anúncios.
O manifesto de exemplo a seguir substitui as tags EXT-X-CUE-IN e 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
O exemplo a seguir mostra um manifesto substituído:
#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
Os segmentos de anúncios da DAI do Google não são criptografados. Se o conteúdo estiver criptografado, remova a criptografia inserindo o elemento EXT-X-KEY:METHOD=NONE antes do primeiro segmento de anúncio de cada intervalo. No final do intervalo, adicione a criptografia novamente inserindo um EXT-X-KEY adequado.
Acompanhe o horário de início, a duração e o índice do próximo intervalo de anúncio.
Gerar um token de código de autenticação de mensagem baseado em hash (HMAC)
Cada solicitação de segmento feita usando o serviço de pod de redirecionamento de segmento precisa incluir um token assinado com HMAC para autenticação.
Calcule esse token uma vez por intervalo de anúncio e compartilhe-o em todas as sessões de streaming.
Reunir parâmetros de token
Para preencher o corpo do token, colete o seguinte do intervalo de anúncio atual:
| Parâmetros de token | ||
|---|---|---|
custom_asset_key
|
Obrigatório | A chave de recurso personalizada da transmissão ao vivo do Google Ad Manager. |
cust_params
|
Opcional | Parâmetros de segmentação personalizada. Consulte cust_params.
|
exp
|
Obrigatório | Carimbo de data/hora de expiração do token atual em segundos. |
network_code
|
Obrigatório | O código de rede do Ad Manager 360. |
pod_id
|
Obrigatório | Identificador do intervalo de anúncio. Um número inteiro que começa em 1. Para cada intervalo de anúncio, esse identificador é incrementado em um.
Esse valor precisa ser o mesmo para todos os usuários que assistem ao mesmo intervalo de anúncio no evento atual. |
pd
|
Obrigatório, exceto para eventos com intervalos de anúncio sem duração ativados. | A duração do intervalo de anúncio em milissegundos. Chamado de
ad_pod_duration.
|
scte35
|
Opcional | Sinal SCTE-35 codificado em Base64. A DAI do Google sempre copia o indicador para o
intervalo de anúncio criado, mesmo que o indicador esteja incorreto.
Se estiver incorreto, você vai receber uma mensagem no cabeçalho HTTP X-Ad-Manager-Dai-Warning na resposta, e o indicador ainda vai criar um intervalo comercial. Para detalhes sobre como a DAI usa o indicador SCTE-35, consulte os marcadores de anúncio compatíveis.
|
Criar string de token
Para criar uma string de token, liste cada parâmetro em ordem alfabética, no formato NAME=VALUE, com cada par nome-valor separado por um caractere til ~.
Para parâmetros opcionais não usados, use uma string vazia como valor ou remova o parâmetro completamente.
O exemplo a seguir formata uma string de token:
custom_asset_key=CUSTOM_ASSET_STRING~exp=EXPIRATION~network_code=NETWORK_CODE~pd=POD_DURATION~pod_id=AD_POD_INDEX~scte35=SCTE35_MESSAGE
Gerar assinatura HMAC
A assinatura HMAC é um hash SHA-256 da string de token no formato HEX. A chave secreta é a chave de autenticação HMAC associada ao evento de transmissão ao vivo no Google Ad Manager.
String do token de assinatura
Depois de gerar a assinatura HMAC, anexe-a à string de token no seguinte formato:
~hmac=HMAC_SIGNATURE
Codificar string de token
Para transmitir o token como um parâmetro de URL, codifique o URL por segurança.
O exemplo a seguir gera um token HMAC assinado e codificado em que parâmetros opcionais não usados são strings vazias:
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
O exemplo a seguir gera um token HMAC assinado e codificado sem parâmetros opcionais não usados:
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
Criar URLs de segmento de anúncio
Substitua cada segmento de conteúdo entre as tags EXT-X-DISCONTINUITY por um URL
que aponte para o método de segmento de agrupamento de anúncios.
O exemplo a seguir monta um segmento de pod de anúncio. Os segmentos de anúncios usam um índice de base zero:
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
O exemplo a seguir insere os segmentos do bloco de anúncios no manifesto:
#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
Opcional: programar um intervalo de anúncio
Para aumentar sua taxa de preenchimento, envie uma notificação de intervalo de anúncio antecipado (EABN) com a duração do conjunto de anúncios, parâmetros de segmentação personalizada e dados de sinal SCTE-35. Para mais detalhes, consulte Enviar notificações antecipadas de intervalo publicitário.