Usa el SDK de DAI de IMA en Android

Reproducir transmisiones de VOD registradas con la API de Video Stitcher de Google Cloud

En esta guía, se muestra cómo usar el SDK de IMA DAI para Android para solicitar y reproducir una sesión de transmisión de VOD de Google Cloud.

En esta guía, se amplía el ejemplo básico de la sección Cómo comenzar guía para la DAI de IMA.

Para obtener información sobre la integración con otras plataformas o el uso de los SDKs del cliente de IMA, consulta SDKs de anuncios multimedia interactivos.

Configura un proyecto de Google Cloud

Ingresa las siguientes variables para usarlas en el SDK de IMA:

Ubicación
La región de Google Cloud donde se creó la configuración de VOD: LOCATION
Número del proyecto
El número de proyecto de Google Cloud con la API de Video Stitcher: PROJECT_NUMBER
Token de OAuth

El token de OAuth de corta duración de una cuenta de servicio con el rol de usuario de Video Stitcher:

OAUTH_TOKEN

Obtén más información para crear tokens de OAuth de corta duración. El token de OAuth se puede volver a usar en varias solicitudes, siempre que no haya caducado.

Código de red

Este es el código de red de Ad Manager para solicitar anuncios: NETWORK_CODE

ID de configuración de VOD

El ID de configuración de VOD para la transmisión de VOD: VOD_CONFIG_ID

Obtén más información para crear el ID de configuración de VOD en la guía para crear una configuración de VOD con la combinación de Cloud.

Configura el ejemplo básico

Ir a la versión de GitHub de DAI para Android de IMA página y descargue el ejemplo básico. Este ejemplo es una app para Android que puedes abrir en Android con fines de prueba.

Para realizar pruebas con una transmisión de VOD de Cloud Video Stitcher, configura CONTENT_TYPE. constante en SampleAdsWrapper.java a ContentType.VOD_HLS, o ContentType.VOD_DASH, para cargar el ID de CMS y el ID de video adecuados para el en tiempo real. Luego, en SampleVideoPlayer.java, establece currentlyPlayingStreamType en CONTENT_TYPE_HLS o CONTENT_TYPE_DASH para controlar correctamente los metadatos del tipo de transmisión que elegiste.

Si todo funciona correctamente, haz clic en el botón de reproducción del reproductor de video. comienza el cortometraje "Tears of Steel" con una pausa publicitaria antes del video.

Solicita una transmisión de VOD

Para reemplazar la transmisión de muestra por tu transmisión de VOD con anuncios unidos, usa sdkFactory.createVideoStitcherVodStreamRequest() para crear una sesión de anuncios con Google Ad Manager. Puedes usar la IU de Google Ad Manager para localizar las sesiones de DAI generadas y supervisarlas y depurarlas.

sdkFactory.createVideoStitcherVodStreamRequest() está disponible en el SDK de IMA DAI v3.30.0 o versiones posteriores.

Para usar sdkFactory.createVideoStitcherVodStreamRequest() con el parámetro vodConfigId, se requiere la versión 3.33.0 o posterior del SDK de IMA DAI.

En la muestra existente, hay sentencias condicionales para solicitar una transmisión de VOD o una transmisión en vivo. Para que funcione con la Herramienta de unión de videos de Google Cloud API, debes agregar una nueva ruta de acceso para mostrar un StreamRequest creado con sdkFactory.createVideoStitcherVodStreamRequest()

A continuación, se presenta un ejemplo:

videoplayerapp/SampleAdsWrapper.java

...
private enum ContentType {
  LIVE_HLS,
  LIVE_DASH,
// Add a VOD HLS Google Cloud type. DASH streams are also supported.
  VOD_HLS_GOOGLE_CLOUD,
  VOD_DASH_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.VOD_HLS_GOOGLE_CLOUD;
...

@Nullable
  private StreamRequest buildStreamRequest() {
    StreamRequest request;
    switch (CONTENT_TYPE) {
      ...
      case VOD_HLS_GOOGLE_CLOUD:
      case VOD_DASH_GOOGLE_CLOUD:
        // VOD HLS or DASH stream generated by the
        // Google Cloud Video Stitcher API.
        request = sdkFactory.createVideoStitcherVodStreamRequest(
          "NETWORK_CODE",
          "LOCATION",
          "PROJECT_NUMBER",
          "OAUTH_TOKEN",
          "VOD_CONFIG_ID"
        );
        if (CONTENT_TYPE == ContentType.VOD_HLS_GOOGLE_CLOUD) {
          request.setFormat(StreamFormat.HLS);
        } else {
          request.setFormat(StreamFormat.DASH);
        }
        return request;
    }
    // Content type not selected.
    return null;
  }
  ...

Vuelve a cargar la app para solicitar y reproducir tu transmisión de VOD personalizada.

Agrega opciones de sesiones de transmisión (opcional)

Personaliza tu solicitud de transmisión agregando opciones de sesión para anular el valor predeterminado. Configuración de la API de Cloud Video Stitcher con StreamRequest.setVideoStitcherSessionOptions() Si proporcionas una opción no reconocida, el servicio de La API de Video Stitcher responderá con un error HTTP 400. Consulta la guía de solución de problemas para obtener asistencia.

Por ejemplo, puedes anular el opciones del manifiesto con el siguiente fragmento de código, que solicita dos manifiestos de transmisión con formatos ordenados de menor a mayor tasa de bits.

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);
}

Limpia

Ahora que alojaste correctamente una transmisión de VOD con la API de Google Cloud Video Stitcher y la solicitaste con el SDK de IMA DAI para Android, es importante limpiar los recursos de publicación.

Sigue la guía de limpieza de VOD para quitar los recursos y activos innecesarios.