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:
- 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).
- 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.
- 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.
- 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.
- 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.