Reproducir transmisiones en vivo registradas con la API de Google Cloud Video Stitcher
Esta guía muestra cómo usar el SDK de IMA de DAI para Android para solicitar y reproducir un transmisión en vivo de un evento registrado en la herramienta de unión de videos de Google Cloud API y cómo insertar una pausa publicitaria durante la reproducción.
En esta guía, se amplía el ejemplo básico de la guía de introducción a 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
en la que se creó tu configuración activa:
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
Más información sobre crear credenciales de corta duración para los servicios . El token de OAuth se puede volver a usar en varias solicitudes, siempre y cuando no haya vencido.
- Código de red
El código de red de Ad Manager para solicitar anuncios:
NETWORK_CODE
- ID de configuración en vivo
- El ID de configuración en vivo que especificaste cuando creaste el evento de transmisión en vivo:
LIVE_CONFIG_ID
- Clave del activo personalizado
- La clave de activo personalizado de Ad Manager que se genera durante el proceso de creación de una configuración para un evento de transmisión en vivo con la API de Video Stitcher:
CUSTOM_ASSET_KEY
Descarga 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 video para iniciar el cortometraje "Lágrimas de acero", que contiene pausas publicitarias cada 30 segundos.
Solicitar una transmisión en vivo
Para reemplazar la transmisión de muestra por tu transmisión en vivo, debes usar ImaSdkFactory.createVideoStitcherLiveStreamRequest()
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 con fines de supervisión y depuración.
En la muestra existente, hay sentencias condicionales para solicitar un VOD.
una transmisión en vivo o una transmisión en vivo. Para que funcione con la API de Video Stitcher de Google Cloud,
debes agregar una nueva ruta de acceso para mostrar un StreamRequest
creado con
ImaSdkFactory.createVideoStitcherLiveStreamRequest()
A continuación, se presenta 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 app para solicitar y reproducir tu transmisión en vivo personalizada.
Agrega opciones de sesión 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 el
guía de solución de problemas
para recibir asistencia.
Por ejemplo, puedes anular las opciones de manifiesto con el siguiente fragmento de código, que solicita dos manifiestos de transmisión con renderizaciones ordenadas de la tasa de bits más baja a la más alta.
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);
}
Cómo insertar una pausa publicitaria
La API de Google Cloud Video Stitcher inserta anuncios recuperados de la etiqueta de anuncio para cada pausa publicitaria. Las pausas publicitarias se indican en el manifiesto con marcadores de anuncios. Los marcadores de anuncios son que insertaste el codificador de transmisión en vivo.
Si usas tu propia transmisión en vivo, debes insertar el marcador del anuncio. Para obtener más información sobre los marcadores de anuncios HLS y DASH admitidos, consulta la documentación de marcadores de anuncios.
Si creaste una transmisión en vivo con la API de Google Cloud Livestream, Inserta un evento de canal de pausa publicitaria.
El anuncio se reproduce inmediatamente después de insertar la pausa publicitaria.
Limpia
Ahora que ya organizaste correctamente una transmisión en vivo con la API de Video Stitcher de Google Cloud y la solicitud con el SDK de IMA de DAI para Android, es importante que limpies todas las instancias de Google Cloud.
Sigue el limpieza de transmisión en vivo para quitar los recursos y recursos innecesarios.