Configurar o SDK do IMA para DAI

Com os SDKs do IMA, é fácil integrar anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor compatível com VAST e gerenciar a reprodução de anúncios nos seus apps. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de streaming para anúncio e conteúdo de vídeo, seja VOD ou conteúdo ao vivo. Em seguida, o SDK retorna um stream de vídeo combinado para que você não precise alternar entre vídeos de anúncios e de conteúdo no seu app.

Selecione a solução de DAI do seu interesse

DAI de disponibilização de conjunto

Com os SDKs do IMA, é fácil integrar anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer servidor compatível com VAST e gerenciar a reprodução de anúncios nos seus apps. Com os SDKs de DAI do IMA, os apps fazem uma solicitação de streaming para anúncio e conteúdo de vídeo, seja VOD ou conteúdo ao vivo. Em seguida, o SDK retorna um stream de vídeo combinado para que você não precise alternar entre vídeos de anúncios e de conteúdo no seu app.

Neste guia, demonstramos como reproduzir um stream de Veiculação de conjunto DAI usando o SDK de DAI do IMA com um player de vídeo para reprodução de stream ao vivo e VOD. Para visualizar ou seguir um exemplo completo de integração, faça o download do exemplo de disponibilização de pods.

Visão geral da Veiculação de conjunto DAI do IMA

  • StreamRequest: um objeto que define uma solicitação de stream para os servidores de publicidade do Google. Precisa ser criado usando ImaSdkFactory.createPodStreamRequest() ou ImaSdkFactory.createPodVodStreamRequest() para ativar a Veiculação de pods. Esses métodos exigem um código de rede, e createPodStreamRequest também requer uma chave de recurso personalizada e uma chave de API opcional. Ambos incluem outros parâmetros opcionais.

  • StreamManager: objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparar pings de rastreamento e encaminhar eventos de stream ao editor.

Pré-requisitos

Configurar as variáveis da Veiculação de pods

Todas as mudanças necessárias para a disponibilização de pods são feitas em SampleAdsWrapper.java. A primeira etapa é atualizar as variáveis constantes.

Estas são as constantes de solicitação de stream do conjunto de anúncios que serão adicionadas:

  • STREAM_URL: usado somente para transmissões ao vivo, é o URL de stream de vídeo fornecido pelo manipulador de manifesto ou pelo parceiro terceirizado que usa a Veiculação de conjunto. É necessário que você insira o ID de stream fornecido pelo SDK de DAI do IMA antes de fazer uma solicitação. Nesse caso, o URL de stream inclui um marcador, "[[STREAMID]]", que é substituído pelo ID do stream antes de fazer uma solicitação.

  • NETWORK_CODE: o código da rede da conta do Ad Manager 360.

  • CUSTOM_ASSET_KEY (usada somente para transmissões ao vivo): é a chave de recurso personalizada que identifica seu evento de veiculação de conjunto no Ad Manager 360. Isso pode ser criado pelo manipulador de manifesto ou pelo parceiro de Veiculação de pods terceirizado.

  • API_KEY (usado somente para transmissões ao vivo): é uma chave de API opcional que pode ser necessária para recuperar um ID de stream do SDK de DAI do IMA.

O BasicExample da DAI do Android foi projetado para reproduzir vários tipos de stream diferentes, mas, para a Veiculação de pods, ele é configurado para reproduzir apenas um único stream. Altere a seção de variável do exemplo para corresponder ao seguinte:

/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
        implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Podserving Stream Constants.
  private static final String STREAM_URL =
          "https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/" +
          "master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample" +
          "&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000" +
          "&seg-host=dai.google.com&stream_id=[[STREAMID]]";
  private static final String NETWORK_CODE = "51636543";
  private static final String CUSTOM_ASSET_KEY = "google-sample";
  private static final String API_KEY = "";

  private static final String PLAYER_TYPE = "DAISamplePlayer";

  /** Log interface, so we can output the log commands to the UI or similar. */
  public interface Logger {

...

Crie uma solicitação de stream de conjunto ao vivo ou de VOD para ativar a disponibilização de pods

Veiculação de conjuntos de transmissão ao vivo

Remova o método buildStreamRequest() que foi usado para alternar entre a criação de vários tipos de stream. Em seguida, altere requestAndPlayAds() para chamar ImaSdkFactory.createPodStreamRequest() e criar uma solicitação de anúncio de Veiculação de conjunto em tempo real. Por fim, solicite o stream usando AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Veiculação de conjunto de stream de VOD

Remova o método buildStreamRequest() que foi usado para alternar entre a criação de vários tipos de stream. Em seguida, altere requestAndPlayAds() para chamar ImaSdkFactory.createPodVodStreamRequest() e criar uma solicitação de anúncio de Veiculação de conjunto de VOD. Por fim, solicite o stream usando AdsLoader.requestStream().

public void requestAndPlayAds() {
  StreamRequest request =
      sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
  request.setFormat(StreamFormat.HLS);

  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  adsLoader.requestStream(request);
}

Editar e definir o URL da transmissão

Veiculação de conjuntos de transmissão ao vivo

Chame StreamManager.getStreamId() para receber o ID de stream. Em seguida, ele precisa ser inserido no STEAM_URL, substituindo "[[STREAMID]]". Depois que essa alteração é feita, o novo URL de stream pode ser definido usando videoPlayer.setStreamUrl().

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);

  streamManager.init();

  videoPlayer.setStreamUrl(streamUrl);
  videoPlayer.play();
}

Veiculação de conjunto de stream de VOD

Chame StreamManager.getStreamId() para receber o ID de stream. Em seguida, solicite um URL de stream do seu parceiro de tecnologia de vídeo (VTP, na sigla em inglês). Em seguida, chame StreamManager.loadThirdPartyStream() para que o IMA carregue o URL de stream e todas as legendas retornadas pelo TVP.

@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
  streamManager = event.getStreamManager();
  streamManager.addAdErrorListener(this);
  streamManager.addAdEventListener(this);

  // To enable streams
  String streamID = streamManager.getStreamId();
  // 'vtpInterface' is a place holder for your own video technology partner
  // (VTP) API calls.
  String streamUrl = vtpInterface.requestStreamURL(streamID);

  streamManager.init();

  // Pass any subtitles returned by your VTP in this step as well.
  streamManager.loadThirdPartyStream(streamUrl, subtitles);
}

Quando a Veiculação de pods está ativada, o IMA não faz chamadas para VideoStreamPlayer.loadUrl(). Portanto, é possível remover qualquer chamada para videoPlayer.setStreamUrl() e videoPlayer.play().

Limpar recursos de DAI do IMA

Quando terminar de solicitar e exibir anúncios em um fluxo de veiculação de pods com o SDK de DAI do IMA, sugerimos que você limpe todos os recursos após a conclusão da sessão. Chame StreamManager.destroy() para interromper a reprodução do stream, interromper todo o rastreamento de anúncios e liberar todos os recursos de stream carregados.

Para conferir outros exemplos do SDK do Android em uso, consulte as amostras no GitHub (link em inglês).