Reproducir transmisiones en vivo registradas con la API de Video Stitcher de Google Cloud
Esta guía muestra cómo usar el SDK de IMA de DAI para iOS 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 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 IMA Para obtener más información sobre los SDKs del cliente, consulta SDK 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ó 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 usuario de Video Stitcher rol:
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
Este es 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 personalizada
- La clave del recurso personalizado de Ad Manager que se generó durante el proceso de creación de una
configuración de un evento de transmisión en vivo
con la API de Video Stitcher:
CUSTOM_ASSET_KEY
- Contexto del usuario
- El contexto del usuario para el seguimiento de solicitudes. Puede ser
nil
. La configuración predeterminada esnil
en esta guía.
Descarga y prepara el ejemplo básico
Descargue los ejemplos de DAI de IMA para iOS y extraiga el ejemplo básico en una carpeta nueva. Este ejemplo es un código de que depende de CocoaPods para cargar el SDK de IMA.
Para preparar la muestra que se ejecutará, asegúrate de que CocoaPods esté instalada y, luego, abre la carpeta del ejemplo básico en la terminal y ejecuta el siguiente comando:
pod install --repo-update
Una vez que se complete el comando, verás un archivo llamado BasicExample.xcworkspace
en
la carpeta de tu proyecto. Abre este archivo en Xcode y ejecuta la muestra para asegurarte de que
el video de prueba y los anuncios se reproducen como se espera.
Solicitar una transmisión en vivo
Para reemplazar la transmisión de muestra con tu transmisión en vivo, debes usar el
IMAVideoStitcherLiveStreamRequest
clase que crea un anuncio automáticamente
con Google Ad Manager. Puedes usar la IU de Google Ad Manager para ubicar
las sesiones de DAI generadas para
supervisión y depuración.
En la muestra existente, hay ejemplos para solicitar una transmisión de VOD o una
transmisión en vivo desde los servidores de DAI de Google. Para que la muestra funcione con el kit de herramientas
API de Cloud Video Stitcher, deberás reemplazar el requestStream
actual
por una que use la clase IMAVideoStitcherLiveStreamRequest
:
ViewController.m
#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
/// Fallback URL in case something goes wrong in loading the stream. If all goes well,
/// this will not be used.
static NSString *const kTestAppContentUrl_M3U8 =
@"//devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";
static NSString *const kLiveConfigId = @"LIVE_CONFIG_ID";
static NSString *const kLocation = @"LOCATION";
static NSString *const kProjectNumber = @"PROJECT_NUMBER";
static NSString *const kOAuthToken = @"OAUTH_TOKEN";
static NSString *const kNetworkCode = @"NETWORK_CODE";
static NSString *const kCustomAssetKey = @"CUSTOM_ASSET_KEY";
@interface ViewController () <IMAAdsLoaderDelegate, IMAStreamManagerDelegate>
...
- (void)requestStream {
// Create an ad display container for ad rendering.
IMAAdDisplayContainer *adDisplayContainer =
[[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView
viewController:self
companionSlots:nil];
// Create an IMAAVPlayerVideoDisplay to give the SDK access to your video player.
IMAAVPlayerVideoDisplay *imaVideoDisplay =
[[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.contentPlayer];
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kLocation
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:nil];
[self.adsLoader requestStreamWithRequest:request];
}
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 completando los
videoStitcherSessionOptions
parámetro en tu
IMAVideoStitcherLiveStreamRequest.
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 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.
Objective-C
// define session options JSON string
NSString *sessionOptionsStr =
@"{"
" \"manifestOptions\": {"
" \"includeRenditions\":["
" {\"bitrateBps\": 3000, \"codecs\": \"hvc1.1.4.L126.B0, mp4a.40.2\"},"
" {\"bitrateBps\": 2000, \"codecs\": \"avc1.64001f, mp4a.40.2\"},"
" ]"
" }"
"}";
// convert JSON NSString to NSDictionary
NSData *sessionOptionsData = [sessionOptionsStr dataUsingEncoding:NSUTF8StringEncoding];
NSError *error = nil;
NSDictionary *sessionOptions = [NSJSONSerialization
JSONObjectWithData:sessionOptionsData
options:0
error:&error];
// make stream request
IMAVideoStitcherLiveStreamRequest *request =
[[IMAVideoStitcherLiveStreamRequest alloc] initWithLiveStreamEventID:kLiveConfigId
region:kRegion
projectNumber:kProjectNumber
OAuthToken:kOAuthToken
networkCode:kNetworkCode
customAssetKey:kCustomAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions];
[self.adsLoader requestStreamWithRequest:request];
Swift
// define session options JSON string
let sessionOptionsStr = """
{
"manifestOptions": {
"includeRenditions": [
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
],
"bitrateOrder": "ascending"
}
}
"""
// convert JSON string to dictionary
guard let sessionOptionsData = sessionOptionsStr.data(using: .utf8, allowLossyConversion: false) else { return nil }
let sessionOptions = try? JSONSerialization.jsonObject(with: sessionOptionsData, options: .mutableContainers)
// make stream request
let request = IMAVideoStitcherLiveStreamRequest(
liveStreamEventID:ViewController.liveConfigId
region:ViewController.region
projectNumber:ViewController.projectNumber
OAuthToken:ViewController.oAuthToken
networkCode:ViewController.networkCode
customAssetKey:ViewController.customAssetKey
adDisplayContainer:adDisplayContainer
videoDisplay:imaVideoDisplay
userContext:nil
videoStitcherSessionOptions:sessionOptions)
adsLoader?.requestStream(with: request)
Ejecuta el proyecto y, luego, solicita y reproduce tu transmisión en vivo personalizada.
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 para obtener más información sobre los marcadores de anuncios HLS y DASH admitidos, consulte la documentación sobre 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 que se inserta 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 iOS, 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.