Usar o SDK de DAI do IMA no Android

Reproduzir transmissões ao vivo registradas com a API Google Cloud Video Stitcher

Este guia demonstra como usar o SDK do IMA DAI para Android para solicitar e reproduzir uma transmissão ao vivo de um evento registrado com a API Google Cloud Video Stitcher e como inserir um intervalo de anúncios durante a reprodução.

Este guia expande o exemplo básico do módulo Comece já guia para DAI do IMA.

Para informações sobre a integração com outras plataformas ou o uso dos SDKs do lado do cliente do IMA, consulte SDKs do Interactive Media Ads.

Configure um projeto do Google Cloud

Insira as seguintes variáveis para uso no SDK do IMA:

Local
A região do Google Cloud em que a configuração ativa foi criada: LOCATION
Número do projeto
O número do projeto do Google Cloud que usa a API Video Stitcher: PROJECT_NUMBER
Token OAuth

Um token OAuth de curta duração de uma conta de serviço com a função de usuário do Video Stitcher:

OAUTH_TOKEN

Saiba mais sobre como criar credenciais de curta duração para contas de serviço. O token OAuth pode ser reutilizado em várias solicitações, desde que não tenha sido expirou.

Código da rede

O código de rede do Ad Manager para solicitar anúncios: NETWORK_CODE

ID da configuração ao vivo
O ID de configuração ao vivo que você especificou ao criar seu evento de transmissão ao vivo: LIVE_CONFIG_ID
Chave de recurso personalizada
A chave de recurso personalizada do Ad Manager gerada durante o processo de criação de um configuração para um evento de transmissão ao vivo com a API Video Stitcher: CUSTOM_ASSET_KEY

Faça o download do exemplo básico

Faça o download e execute a DAI do IMA para Android básica Exemplo. Clique no botão play no player de vídeo para iniciar o curta-metragem "Tears of Steel", que contém intervalos de anúncios a cada 30 segundos.

Solicitar uma transmissão ao vivo

Para substituir a transmissão de amostra pela transmissão ao vivo, use o ImaSdkFactory.createVideoStitcherLiveStreamRequest() para criar uma sessão de anúncios com o Google Ad Manager. Você pode usar o Gerenciador de Anúncios do Google Interface do gerenciador para localizar a DAI gerada de acesso para monitoramento e para fins de depuração.

Na amostra existente, há instruções condicionais para solicitar um VOD ou uma transmissão ao vivo. Para que ele funcione com a API Google Cloud Video Stitcher, é necessário adicionar um novo caminho para retornar um StreamRequest criado usando ImaSdkFactory.createVideoStitcherLiveStreamRequest().

Veja um exemplo:

videoplayerapp/SampleAdsWrapper.java

private sdkFactory ImaSdkFactory;
...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a Live HLS Google Cloud type.
  LIVE_HLS_GOOGLE_CLOUD,
  VOD_HLS,
  VOD_DASH,
}

// Set CONTENT_TYPE to the associated enum for the
// stream type you would like to test.
private static final ContentType CONTENT_TYPE =
    ContentType.LIVE_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case LIVE_HLS_GOOGLE_CLOUD:
        // Live HLS stream generated by the Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherLiveStreamRequest(
          "NETWORK_CODE",
          "CUSTOM_ASSET_KEY",
          "LIVE_CONFIG_ID",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN"
        );
        request.setFormat(StreamFormat.HLS);
        return request;
    }
    // Content type not selected.
    return null;
  }
...

Recarregue o app para solicitar e assistir a transmissão ao vivo personalizada.

(Opcional) Adicionar opções de sessão de streaming

Personalize sua solicitação de transmissão adicionando opções de sessão para substituir a configuração padrão da API Cloud Video Stitcher usando StreamRequest.setVideoStitcherSessionOptions(). Se você fornecer uma opção não reconhecida, o Cloud A API Video Stitcher responderá com um erro HTTP 400. Consulte o guia de solução de problemas para receber ajuda.

Por exemplo, é possível substituir opções do manifesto pelo snippet de código a seguir, que solicita dois manifestos de stream com renderizações ordenadas da menor taxa de bits para a maior.

public void requestAndPlayAds() {
  adsLoader.addAdErrorListener(this);
  adsLoader.addAdsLoadedListener(this);
  StreamRequest streamRequest = buildStreamRequest();

  // The following session options are examples. Use session options
  // that are compatible with your video stream.
  Map<String, Object> sessionOptions = Map.of(
    "manifestOptions", Map.of(
      "includeRenditions", List.of(
        Map.of(
          "bitrateBps", 3000, "codecs",
          "hvc1.1.4.L126.B0, mp4a.40.2"),
        Map.of(
          "bitrateBps", 2000,
          "codecs", "avc1.64001f, mp4a.40.2")
      ),
      "bitrateOrder", "ascending"
    )
  );

  /* sessionOptions JSON structure.
   * {
   *  "manifestOptions": {
   *    "includeRenditions": [
   *      {"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
   *      {"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
   *    ],
   *    "bitrateOrder": "ascending"
   *  }
   * };
   */

  streamRequest.setVideoStitcherSessionOptions(sessionOptions);
  adsLoader.requestStream(streamRequest);
}

Inserir um intervalo de anúncio

A API Google Cloud Video Stitcher insere anúncios extraídos da tag de anúncio para cada intervalo de anúncios. Os intervalos comerciais são indicados no manifesto usando marcadores de anúncios. Os marcadores de anúncio são inseridos pelo codificador de transmissão ao vivo.

O anúncio é reproduzido imediatamente após o intervalo de anúncio ser inserido.

Limpar

Agora que você organizou uma transmissão ao vivo usando a API Google Cloud Video Stitcher e a solicitou usando o SDK de DAI do IMA. para Android, é importante limpar todos os do Google Cloud.

Siga o guia de limpeza de transmissão ao vivo para remover recursos e recursos desnecessários.