Introdução à SGAI

A inserção de anúncios guiada pelo servidor (SGAI, na sigla em inglês) fornece um manifesto de conjunto de anúncios pronto para costura em dispositivos clientes. Se você ativou a DAI de veiculação de pods na sua rede do Google Ad Manager, tem acesso para usar a SGAI. Se você não tiver a DAI de fornecimento de pods ativada, entre em contato com seu gerente de contas.

Com a SGAI, você usa os endpoints da API de veiculação de pods para criar um fluxo que recupera metadados de anúncios e os manifestos de pods de anúncios.

Se você tiver um servidor de manipulação de manifesto, poderá gerar os URLs do manifesto do bloco de anúncios e inserir marcadores de anúncios que carreguem as informações do manifesto do bloco de anúncios no seu fluxo de conteúdo, de acordo com a especificação de sua preferência.

Como alternativa, você pode programar um intervalo de anúncios usando um mecanismo diferente dos marcadores de anúncios no manifesto de streaming. Nesses casos, o app pode detectar outros eventos, por exemplo, a interação do usuário com o stream, o próprio app ou uma notificação push. Depois desses eventos, o app pode gerar os URLs do manifesto do conjunto de anúncios e informar ao player para começar a carregar o manifesto do conjunto de anúncios.

Pré-requisitos

Antes de continuar, verifique se você tem o seguinte:

  • A veiculação de conjunto de DAI foi ativada na sua rede do Google Ad Manager.
  • Um evento de transmissão ao vivo com o tipo Manifesto de veiculação de conjunto. Para criar o evento, consulte Configurar uma transmissão ao vivo para DAI.

Seguir recomendações

Antes de gerar o URL do manifesto do bloco de anúncios, recomendamos chamar a API Early Ad Break Notification (EABN) para especificar a duração esperada, as informações de segmentação e outros parâmetros de cada intervalo de anúncio.

Para streams de produção e teste, chame a API EABN, principalmente se a rede de publicidade tiver campanhas programáticas. Para mais informações, consulte Recursos e diretrizes do Programático direto.

Fazer uma solicitação de registro de stream

Quando um usuário inicia um stream de conteúdo no app de player de vídeo, você faz uma solicitação de registro de stream com parâmetros de segmentação para criar uma sessão de streaming no Ad Manager. Para saber como fazer uma solicitação de registro de stream, consulte Método:stream. Depois, você recebe dados de resposta da solicitação.

Os exemplos a seguir fazem uma solicitação de registro de stream:

  • Solicitação:
authority: dai.google.com
method: POST
path: /ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream
scheme: https
content-type: application/x-www-form-urlencoded

cust_params=customID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2
  • Resposta:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}
  • Linha de comando:
curl \
-H "Host: dai.google.com" \
-H "content-type: application/x-www-form-urlencoded" \
  --data-binary "cust_params=channelID%253D1543216789%2526anotherKey%253Dvalue1%252Cvalue2" \
  --compressed "https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream"
  • Saída:
{
    "manifest_format": "hls",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "polling_frequency": 10,
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL"
}
  • Usando a API Fetch:
const response = await fetch("https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/hls-podserving-manifest/stream", {
  "headers": {
    "content-type": "application/x-www-form-urlencoded",
  },
  "body": "cust_params=channelID%3D1543216789%26anotherKey%3Dvalue1%2Cvalue2",
  "method": "POST",
});

  const stream = await response.json();
  console.log(stream);
  • Registro do console:
{
    "stream_id": "24fd4e7c-95a0-42be-8874-00625139b9db:TUL",
    "media_verification_url": "https://dai.google.com/view/p/service/linear/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/loc/TUL/network/51636543/event/TFyZF0IoSpqvCLtLv8JdCw/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/metadata",
    "session_update_url": "https://dai.google.com/linear/v1/pa/event/TFyZF0IoSpqvCLtLv8JdCw/stream/24fd4e7c-95a0-42be-8874-00625139b9db:TUL/session",
    "polling_frequency": 10,
    "pod_manifest_url": "https://dai.google.com/linear/pods/v1/hls/event/TFyZF0IoSpqvCLtLv8JdCw/pod/$pod-id$.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db%3ATUL",
    "manifest_format": "hls"
}

Consultar metadados de intervalos de anúncios

Depois de fazer uma solicitação de registro de stream, consulte os metadados do anúncio. Para fazer a pesquisa, defina um timer usando o polling_frequence na resposta do fluxo na etapa de registro para chamar os metadata do anúncio. Para cada enquete, você pode receber uma lista parcial de anúncios com metadados conforme eles ficam disponíveis.

Gerar o URL do manifesto do conjunto de anúncios

Crie um URL para o recurso do pod da API Veiculação de pod. Em seguida, transmita o URL para um player de vídeo para começar a carregar o conjunto de anúncios.

O exemplo a seguir demonstra a estrutura do URL do manifesto do bloco de anúncios:

https://dai.google.com/linear/pods/v1/hls/network/51636543/custom_asset/pod_serving_hls_manifest_mp4/ad_break_id/ab101.m3u8?stream_id=24fd4e7c-95a0-42be-8874-00625139b9db:TUL&pd=120000

É possível calcular os parâmetros de URL do anúncio do conjunto de anúncios com base nas informações de intervalo de anúncio recuperadas do player de vídeo ou de uma notificação do servidor. Para conferir os requisitos desses parâmetros, consulte Método: manifesto do pod.

Reproduzir o manifesto do conjunto de anúncios

No app do player de vídeo do cliente, inicie a reprodução do stream de conteúdo com um player principal e siga a documentação do player de vídeo para observar a reprodução e a programação de anúncios, se relevante.

Se você gerar os URLs do manifesto do conjunto de anúncios e inseri-los no manifesto no lado do servidor, observe os próximos eventos de intervalo de anúncio do player de vídeo e assine os eventos id3 durante cada reprodução de intervalo de anúncio. Se você programar os eventos de pausa de anúncio do lado do cliente, inscreva-se nos eventos id3 na criação.

Gerar relatórios de impressões e eventos de anúncios

Quando um player de vídeo exibe o bloco de anúncios e encontra metadados programados do ID3, ele ouve os eventos de anúncio que o player de vídeo aciona e processa para enviar pings de verificação de mídia.