API Dynamic Ad Insert para transmissões ao vivo

A API de DAI do Google permite implementar streams ativados para DAI do Google em ambientes em que não há suporte para a implementação do SDK do IMA. Recomendamos que você ainda use IMA em plataformas compatíveis com o SDK do IMA.

Recomendamos o uso da API DAI nas seguintes plataformas:

  • Smart TV Samsung (Tizen)
  • TV LG
  • HbbTV
  • Xbox (apps JavaScript)
  • KaiOS

A API é compatível com os recursos básicos fornecidos pelo SDK de DAI do IMA. Para perguntas específicas sobre compatibilidade ou recursos com suporte, entre em contato seu gerente de contas do Google.

Implementar a API DAI em transmissões AO VIVO

A API DAI é compatível com streams lineares (AO VIVO) usando os protocolos HLS e DASH. As etapas descritas neste guia se aplicam aos dois protocolos.

Para integrar a API ao seu app para transmissões AO VIVO, conclua as seguintes etapas: etapas:

1. Solicitar uma transmissão

Para solicitar uma transmissão ao vivo da API DAI, faça uma chamada POST para o stream endpoint do Google Cloud. A resposta JSON contém o manifesto de stream e as informações Endpoints e valores de API DAI.

Exemplo de corpo de solicitação

https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Exemplo de corpo de resposta

{
"stream_id":"c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session",
"polling_frequency":10
}

Resposta de erro

Em caso de erros, os códigos de erro HTTP padrão são retornados sem resposta JSON. corpo

Analise a resposta JSON e armazene os seguintes valores:

stream_id
Esse valor pode ser usado para identificar o stream retornado.
stream_manifest
Esse URL é transmitido ao player de mídia para reprodução do stream.
media_verification_url
Esse URL é o endpoint base para rastrear eventos de reprodução.
metadata_url
Este URL é usado para pesquisar informações periódicas sobre os próximos streams eventos.
session_update_url
Esse URL é usado para atualizar os parâmetros de solicitação de stream enviados durante a fase inicial solicitação de stream. Os parâmetros dessa solicitação substituem todos os parâmetros definido para a transmissão anterior.
polling_frequency
A frequência, em segundos, ao solicitar metadados atualizados do intervalo de anúncio do API DAI.

2. Votação para novos metadados de intervalo de anúncio

Defina um cronômetro para pesquisar novos metadados AdBreak na frequência de sondagem, usando o URL de metadados. Se não for especificado na resposta do stream, o padrão recomendado é de 10 segundos.

Exemplo de corpo de solicitação

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/metadata

Exemplo de corpo de resposta

{
   "tags":{
      "google_0492266569":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"firstquartile"
      },
      "google_1560331148":{
         "ad":"0000229836_ad1",
         "ad_break_id":"0000229836",
         "type":"thirdquartile"
      },
      "google_1877686714378797835":{
         "ad":"0000229836_slate",
         "ad_break_id":"0000229836",
         "type":"progress"
      },
      "google_1vRyQBYPw_7Gg3MrZ6S5EjmV9aLje-YpW8QHed1DSlU":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"progress"
      },
      "google_2032765498":{
         "ad":"0000229835_ad1",
         "ad_break_id":"0000229835",
         "type":"midpoint"
      },......
      "google_5646900623":{
         "ad":"0000229837_ad1",
         "ad_break_id":"0000229837",
         "type":"complete"
      }
   },
   "ads":{
      "0000229834_ad1":{
         "ad_break_id":"0000229834",
         "position":1,
         "duration":15.01,
         "title":"truman-e2e-creativeset4",
         "description":"truman-e2e-creativeset4 ad",
         "ad_system":"GDFP",
         "ad_id":"39066884",
         "creative_id":"58092079124",
         "clickthrough_url":"https://pubads.g.doubleclick.net/pcs/click?xai=AKAO...\u0026adurl=http://google.com",
         "universal_ad_id":{
            "id_value":"58092079124",
            "id_registry":"GDFP"
         }
      },
      "0000229834_slate":{
         "ad_break_id":"0000229834",
         "position":-1,
         "duration":14.974977777,
         "slate":true
      },...
   },
   "ad_breaks":{
      "0000229834":{
         "type":"mid",
         "duration":15.01,
         "expected_duration":29.984977776999997,
         "ads":1
      },....
   }
}

3. Detecte eventos ID3 e acompanhe os eventos de reprodução

Para verificar se eventos específicos ocorreram em um stream de vídeo, siga estas Etapas para lidar com eventos ID3:

  1. Armazenar os eventos de mídia em uma fila, salvando cada ID de mídia junto com os respectivos carimbo de data/hora (se for exibido pelo jogador).
  2. Em cada atualização do player ou em uma frequência definida (recomendado) 500 ms), verifique se há eventos reproduzidos recentemente na fila de eventos de mídia comparando os carimbos de data/hora dos eventos com o marcador.
  3. Para eventos de mídia que você confirmou que foram reproduzidos, verifique o tipo pesquisando. o ID de mídia nas tags de intervalo de anúncio armazenadas. As tags armazenadas contêm apenas um prefixo do ID da mídia. Portanto, uma correspondência exata não é possível.
  4. Usar "progresso" para acompanhar se um usuário está dentro de um intervalo de anúncio. Não envie esses eventos para o endpoint de verificação de mídia. Para outro evento de mídia, anexe o ID de mídia ao endpoint de verificação de mídia e faça um GET para rastrear a reprodução.
  5. Remova o evento de mídia da fila.

Exemplo de corpo de solicitação

https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/

Exemplos de respostas

Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict

Verifique os eventos de rastreamento em Atividade de transmissão Monitorar.

4. Atualizar os parâmetros da sessão da transmissão ao vivo

Talvez você queira ajustar os parâmetros da sessão depois que um stream for criados. Para isso, faça uma solicitação ao URL de atualização da sessão.

Exemplo de corpo de solicitação

https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/session

{
  key1 : "value1",
  stream_parameter1 : "value2"
}

Exemplo de corpo de resposta

Successful response would be to look for - HTTP/1.1 200

Limitações

Ao usar a API em WebViews, as seguintes limitações se aplicam com relação à segmentação:

  • UserAgent: o parâmetro do user agent é transmitido como um valor específico do navegador. em vez da plataforma subjacente.
  • rdid, idtype, is_lat: O ID do dispositivo não é transmitido corretamente, o que limita os recursos do seguintes recursos:
    • Limite de frequência
    • Rotação de anúncios sequencial
    • Segmentação de público-alvo

Práticas recomendadas

Lembre-se de que o endpoint de metadados para índices de transmissão ao vivo é baseado no da tag ID3 correspondente. Isso ocorre por padrão para impedir o uso do endpoint de metadados para dar um ping imediatamente em todos os nós de verificação.

Outros recursos