Reproducir emisiones en directo registradas con la API Google Cloud Video Stitcher
En esta guía se muestra cómo usar el SDK de IMA DAI para Android para solicitar y reproducir una emisión en directo de un evento registrado con la API Video Stitcher de Google Cloud, así como insertar un bloque de anuncios durante la reproducción.
Esta guía amplía el ejemplo básico de la guía de inicio de IMA DAI.
Para obtener información sobre cómo integrar otras plataformas o usar los SDKs de IMA del lado del cliente, consulte SDKs de anuncios multimedia interactivos.
Si quieres ver o seguir una integración de ejemplo completa, descarga el ejemplo de Cloud Video Stitcher.
Configura un proyecto de Google Cloud.
Introduzca las siguientes variables para usarlas en el SDK de IMA:
- Ubicación
- La región de Google Cloud
en la que se creó tu configuración activa:
LOCATION
- Número de proyecto
- Número de proyecto de Google Cloud que usa la API Video Stitcher:
PROJECT_NUMBER
- Token de OAuth
Token de OAuth de corta duración de una cuenta de servicio con el rol de usuario Video Stitcher:
OAUTH_TOKEN
Consulta más información sobre cómo crear credenciales de cuentas de servicio de duración reducida. El token de OAuth se puede reutilizar en varias solicitudes siempre que no haya caducado.
- Código de red
El código de red de Ad Manager para solicitar anuncios:
NETWORK_CODE
- ID de configuración de la emisión en directo
- El ID de configuración de la emisión en directo que especificaste al crear el evento:
LIVE_CONFIG_ID
- Clave de recurso personalizada
- La clave de recurso personalizada de Ad Manager que se genera durante el proceso de creación de una configuración para un evento de emisión en directo
con la API Video Stitcher:
CUSTOM_ASSET_KEY
Descargar el ejemplo básico
Descarga y ejecuta el ejemplo básico de DAI de IMA para Android. Haz clic en el botón Reproducir del reproductor de vídeo para ver el cortometraje "Lágrimas de acero", que contiene pausas publicitarias cada 30 segundos.
Solicitar una emisión en directo
Para sustituir la emisión de muestra por tu emisión en directo, debes usar el
ImaSdkFactory.createVideoStitcherLiveStreamRequest()
para crear una sesión publicitaria con Google Ad Manager. Puedes usar la interfaz de usuario de Google Ad Manager para localizar las sesiones de inserción dinámica de anuncios generadas con fines de monitorización y depuración.
En el ejemplo actual, hay instrucciones condicionales para solicitar un stream de vídeo bajo demanda o un stream en directo. Para que funcione con la API Google Cloud Video Stitcher, debes añadir una nueva ruta para devolver un StreamRequest
creado con ImaSdkFactory.createVideoStitcherLiveStreamRequest()
.
Veamos un ejemplo:
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;
}
...
Vuelve a cargar la aplicación para solicitar y reproducir tu emisión en directo personalizada.
(Opcional) Añadir opciones de sesión de streaming
Personaliza tu solicitud de emisión añadiendo opciones de sesión para anular la configuración predeterminada de la API Cloud Video Stitcher mediante StreamRequest.setVideoStitcherSessionOptions()
.
Si proporcionas una opción no reconocida, la API Cloud Video Stitcher responderá con un error HTTP 400. Consulta la guía de solución de problemas para obtener ayuda.
Por ejemplo, puedes anular las opciones del manifiesto con el siguiente fragmento de código, que solicita dos manifiestos de emisión con representaciones ordenadas 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(
"bitrateOrder", "ascending"
)
);
/* sessionOptions JSON structure.
* {
* "manifestOptions": {
* "bitrateOrder": "ascending"
* }
* };
*/
streamRequest.setVideoStitcherSessionOptions(sessionOptions);
adsLoader.requestStream(streamRequest);
}
Insertar una pausa publicitaria
La API Google Cloud Video Stitcher inserta anuncios obtenidos de la etiqueta publicitaria de cada pausa publicitaria. Las pausas publicitarias se indican en el manifiesto mediante marcadores de anuncio. El codificador de emisiones en directo inserta los marcadores de anuncios.
Si usas tu propia emisión en directo, debes insertar el marcador de anuncio. Para obtener más información sobre los marcadores de anuncios HLS y DASH admitidos, consulte la documentación sobre marcadores de anuncios.
Si has creado una emisión en directo con la API Livestream de Google Cloud, inserta un evento de canal de pausa publicitaria.
El anuncio se reproduce inmediatamente después de insertar la pausa publicitaria.
Limpieza
Ahora que has alojado correctamente una emisión en directo con la API Video Stitcher de Google Cloud y la has solicitado con el SDK de DAI de IMA para Android, es importante que elimines los recursos de servicio.
Sigue la guía para limpiar las emisiones en directo para quitar los recursos y los activos que no necesites.