API Dynamic Ad Insert para streams de VOD

Com a API Google DAI, é possível implementar streams ativados para DAI do Google em ambientes onde não há suporte para a implementação do SDK do IMA. Recomendamos que você ainda use o IMA nas plataformas compatíveis.

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 dúvidas específicas sobre compatibilidade ou recursos compatíveis, entre em contato com seu gerente de contas do Google.

Implementar a API DAI para streams de VOD

A API DAI é compatível com transmissões de VOD que usam os protocolos HLS e DASH. As etapas descritas neste guia se aplicam aos dois protocolos.

Para integrar a API ao aplicativo para streams VOD, siga estas etapas:

  1. Solicite um stream fazendo uma chamada POST para o endpoint do stream:

    Exemplo de corpo da solicitação:

    https://dai.google.com/ondemand/v1/dash/content/2559737/vid/tos-dash/stream
    
      {
        key1 : "value1",
        stream_parameter1 : "value2"
      }
    

    Exemplo de corpo de resposta:

    {
       "stream_id":"d32f8920-612a-4d46-8bc7-d73fd6c17c85",
       "total_duration":636.458,
       "content_duration":596.458,
       "valid_for":"8h0m0s",
       "valid_until":"2020-06-04T20:39:41.274707306-07:00",
       "stream_manifest":"https://dai.google.com/ondemand/dash/content/2559737/vid/tos-dash/ATL/streams/d32f8920-612a-4d46-8bc7-d73fd6c17c85/manifest.mpd",
       "media_verification_url":"https://dai.google.com/view/p/service/vod/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/loc/ATL/network/124319096/content/2559737/vid/tos-dash/media/",
       "ad_breaks":[
          {
             "type":"pre",
             "start":0,
             "duration":10,
             "ads":[
                {
                   "seq":1,
                   "duration":10,
                   "title":"External NCA1C1L1 Preroll",
                   "description":"External NCA1C1L1 Preroll ad",
                   "clickthrough_url":"https://dai.google.com/ondemand/v1/dash/content/2474148/vid/bbb-clear/location/ATL/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/videoclick/5489259204425938365",
                   "events":[
                      {
                         "time":0.1,
                         "type":"start"
                      },
                      {
                         "time":2.5,
                         "type":"firstquartile"
                      },
                      {
                         "time":4.75,
                         "type":"midpoint"
                      },
                      {
                         "time":7.5,
                         "type":"thirdquartile"
                      },
                      {
                         "time":9,
                         "type":"complete"
                      }
                   ]
                }
             ]
          },
          {
             "type":"mid",
             "start":45,
             "duration":10,
             "ads":[
                {.... }
                   ]
                }
             ]
          },
          {
             "type":"post",
             "start":626.458,
             "duration":10,
             "ads":[...]
          }
       ]
    }
    

    Resposta de erro

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

  2. Analise a resposta JSON e armazene os seguintes valores:

    • stream_id
    • stream_manifest
    • media_verification_url
    • ad_breaks
  3. Para realizar a verificação de mídia, detecte eventos ID3:

    1. Armazene os eventos de mídia em uma fila, salvando cada ID de mídia com o carimbo de data/hora (se exibido pelo player).
    2. Sempre que houver uma atualização do player ou, em uma frequência definida (recomendado), 500 ms, verifique a fila de eventos de mídia para ver os eventos reproduzidos recentemente comparando os carimbos de data/hora dos eventos com o marcador.
    3. Para eventos de mídia que você confirmar que foram reproduzidos, acompanhe a reprodução anexando o ID da mídia ao endpoint de verificação de mídia e fazendo uma solicitação GET.

    Exemplo de corpo da 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 resposta:

    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
    

    Você pode verificar os eventos de rastreamento no Monitoramento de atividades de streaming.

  4. Opcional: use os dados ad_breaks da resposta de criação de stream para consultar que tipo de evento foi disparado.

  5. Remove o evento de mídia da fila.

Limitações

Ao usar a API em WebViews, as seguintes limitações se aplicam à 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 seguintes recursos:
    • Limite de frequência
    • Rotação de anúncios sequencial
    • Segmentação de público-alvo

Práticas recomendadas

Mapear tags ID3 para o tipo de evento apropriado é tedioso em VOD. Use as informações do ad_breaks retornadas no JSON para procurar o evento diretamente, como faria com o conteúdo ao vivo.

Outros recursos