Configura el SDK de IMA para la DAI

Los SDKs de IMA facilitan la integración de anuncios multimedia en tus sitios web y aplicaciones. Los SDKs de IMA pueden solicitar anuncios de cualquier servidor de anuncios compatible con VAST y administrar la reproducción de anuncios en tus aplicaciones. Con los SDKs de IMA DAI, las apps realizan una solicitud de transmisión para el video del anuncio y el contenido, ya sea VOD o contenido en vivo. Luego, el SDK devuelve una transmisión de video combinada, de modo que no tengas que administrar el cambio entre el anuncio y el video de contenido en tu app.

Selecciona la solución de DAI que te interesa

Publicación de grupos de anuncios de DAI

Los SDKs de IMA facilitan la integración de anuncios multimedia en tus sitios web y aplicaciones. Los SDKs de IMA pueden solicitar anuncios de cualquier servidor de anuncios compatible con VAST y administrar la reproducción de anuncios en tus aplicaciones. Con los SDKs de IMA DAI, las apps realizan una solicitud de transmisión para el video del anuncio y el contenido, ya sea VOD o contenido en vivo. Luego, el SDK devuelve una transmisión de video combinada, de modo que no tengas que administrar el cambio entre el anuncio y el video de contenido en tu app.

En esta guía, se muestra cómo reproducir una transmisión de Publicación de grupos de anuncios de DAI con el SDK de IMA DAI y un reproductor de video para la reproducción de transmisiones en vivo y de VOD. Para ver o seguir una integración de muestra completa, descarga el ejemplo de Pod Serving.

Descripción general de la Publicación de grupos de anuncios de DAI de IMA

  • StreamRequest: Es un objeto que define una solicitud de transmisión a los servidores de anuncios de Google. Se debe crear con ImaSdkFactory.createPodStreamRequest() o ImaSdkFactory.createPodVodStreamRequest() para habilitar el servicio de Pods. Estos métodos requieren un código de red, y createPodStreamRequest también requiere una clave de recurso personalizada y una clave de API opcional. Ambos incluyen otros parámetros opcionales.

  • StreamManager: Es un objeto que controla la comunicación entre la transmisión de video y el SDK de DAI de IMA, como el envío de pings de seguimiento y el reenvío de eventos de transmisión al publicador.

Requisitos previos

Configura tus variables de Publicación de grupos de anuncios

Todos los cambios necesarios para la Publicación de grupos de anuncios se realizan en SampleAdsWrapper.java. El primer paso es actualizar las variables constantes.

Estas son las constantes de solicitud de transmisión de cápsulas de anuncios que se deben agregar:

  • STREAM_URL: Solo se usa para transmisiones en vivo: Es la URL de la transmisión de video que proporciona tu manipulador de manifiestos o socio externo a través de la publicación de grupos de anuncios. Debería solicitarte que insertes el ID de transmisión que proporciona el SDK de IMA DAI antes de que realices una solicitud. En este caso, la URL de transmisión incluye un marcador de posición, "[[STREAMID]]", que se reemplaza por el ID de transmisión antes de realizar una solicitud.

  • NETWORK_CODE: Es el código de red de tu cuenta de Ad Manager 360.

  • CUSTOM_ASSET_KEY: Solo se usa para transmisiones en vivo: Es la clave de activo personalizada que identifica tu evento de Pod Serving en Ad Manager 360. Tu manipulador de manifiestos o socio externo de Publicación de grupos de anuncios pueden crear este objeto.

  • API_KEY: Solo se usa para transmisiones en vivo: Es una clave de API opcional que se puede requerir para recuperar un ID de transmisión del SDK de IMA de DAI.

El ejemplo básico de DAI para Android está diseñado para reproducir una variedad de tipos de transmisiones diferentes, pero, para la Publicación de grupos de anuncios, está configurado para reproducir solo una transmisión. Cambia la sección de variables del ejemplo para que coincida con lo siguiente:

/** This class implements IMA to add pod ad-serving support to SampleVideoPlayer */
@SuppressLint("UnsafeOptInUsageError")
/* @SuppressLint is needed for new media3 APIs. */
public class SampleAdsWrapper
    implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Set up the pod serving variables.
  private static final String NETWORK_CODE = "";
  private static final String CUSTOM_ASSET_KEY = "";
  private static final String API_KEY = "";
  private static final String STREAM_URL = "";
  private static final StreamFormat STREAM_FORMAT = StreamFormat.HLS;

Crea una solicitud de transmisión de grupo de anuncios en vivo o de VOD para habilitar la Publicación de grupos de anuncios

Publicación de Pods de transmisiones en vivo

Se quitó el método buildStreamRequest() que se había usado para cambiar entre la compilación de una variedad de tipos de transmisiones. Luego, modifica requestAndPlayAds() para llamar a ImaSdkFactory.createPodStreamRequest() y crear una solicitud de anuncios de Live Pod Serving.

// Live pod stream request.
request = sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);

Publicación de grupos de anuncios de transmisiones de VOD

Se quitó el método buildStreamRequest() que se había usado para cambiar entre la compilación de una variedad de tipos de transmisiones. Luego, modifica requestAndPlayAds() para llamar a ImaSdkFactory.createPodVodStreamRequest() y crear una solicitud de anuncio de publicación de Pod de VOD.

// VOD pod stream request.
request = sdkFactory.createPodVodStreamRequest(NETWORK_CODE);

Después de crear la instancia de solicitud de transmisión, solicita la transmisión con AdsLoader.requestStream():

request.setFormat(STREAM_FORMAT);
adsLoader.requestStream(request);

Cómo editar y establecer la URL de la transmisión

Publicación de Pods de transmisiones en vivo

Llama al método StreamManager.getStreamId() para obtener el ID de transmisión. Esto se debe insertar en STEAM_URL y reemplazar "[[STREAMID]]". Después de realizar este cambio, establece la nueva URL de transmisión con el método videoPlayer.setStreamUrl() y llama al método videoPlayer.play() para iniciar la reproducción de la transmisión.

// Play the live pod stream.
streamID = streamManager.getStreamId();
String liveStreamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
// Call videoPlayer.play() here, because IMA doesn't call the VideoStreamPlayer.loadUrl()
// function for livestreams.
videoPlayer.setStreamUrl(liveStreamUrl);
videoPlayer.play();

Publicación de grupos de anuncios de transmisiones de VOD

  1. Llama al método StreamManager.getStreamId() para obtener el ID de transmisión.
  2. Solicita una URL de transmisión a tu socio de tecnología de video (VTP).
  3. Después de recibir la URL de tu VTP, llama al método StreamManager.loadThirdPartyStream() con la URL para cargar la transmisión, junto con los subtítulos que devuelva tu VTP.
// Play the VOD pod stream.
streamID = streamManager.getStreamId();
String vodStreamUrl = "";
// Refer to your Video Tech Partner (VTP) or video stitching guide to fetch the stream URL
// and the subtitles for a the ad stitched VOD stream.

// In the following commented out code, 'vtpInterface' is a place holder
// for your own video technology partner (VTP) API calls.
// vodStreamUrl = vtpInterface.requestStreamURL(streamID);
List<Map<String, String>> subtitles = new ArrayList<>();
streamManager.loadThirdPartyStream(vodStreamUrl, subtitles);

En el caso de las solicitudes de publicación de Pods de VOD, IMA llama a la devolución de llamada VideoStreamPlayer.loadUrl() cuando se carga la transmisión. Para iniciar la reproducción de la transmisión, agrega las llamadas videoPlayer.setStreamUrl() y videoPlayer.play() a la devolución de llamada VideoStreamPlayer.loadUrl():

private VideoStreamPlayer createVideoStreamPlayer() {
  return new VideoStreamPlayer() {
    @Override
    public void loadUrl(String url, List<HashMap<String, String>> subtitles) {
      // IMA doesn't make calls to VideoStreamPlayer.loadUrl() for pod serving live streams.
      // The following code is for VOD streams.
      videoPlayer.setStreamUrl(url);
      videoPlayer.play();
    }

Limpia los recursos de la DAI de IMA

Cuando hayas terminado de solicitar y mostrar anuncios en una transmisión de Pod Serving con el SDK de IMA DAI, te sugerimos que limpies los recursos después de que finalice la sesión de Pod Serving. Llama a StreamManager.destroy() para detener la reproducción de la transmisión, detener todo el seguimiento de anuncios y liberar todos los recursos de transmisión cargados.

Para ver otros ejemplos del uso del SDK de Android, consulta los ejemplos en GitHub.