Reproducir transmisiones de VOD registradas con la API de Google Cloud Video Stitcher
En esta guía, se muestra cómo usar el SDK de IMA DAI para Roku 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 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.
Si deseas ver o seguir una integración de muestra completa, descarga el ejemplo de la herramienta de unión de videos de Cloud.
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ó la configuración de VOD:
LOCATION
- Número del proyecto
- El número de proyecto de Google Cloud que usa 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
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
Descarga y ejecuta el ejemplo básico de DAI de IMA para Roku. Haz clic en el botón de reproducción del reproductor de video para iniciar el cortometraje “Tears of Steel”, que contiene pausas publicitarias cada 30 segundos.
Cómo solicitar una transmisión de VOD
Usa la función sdk.createVideoStitcherVodStreamRequestWithVodConfig()
para reemplazar la transmisión de muestra por tu transmisión de VOD con anuncios integrados. Puedes usar la IU de Google Ad Manager para localizar las sesiones de DAI generadas y realizar la supervisión y la depuración.
En la muestra existente, hay sentencias condicionales para determinar si se debe crear un StreamRequest
de VOD o un StreamRequest
en vivo. Agrega una ruta de acceso nueva para compilar un StreamRequest
de VOD de Cloud Video Stitcher con los valores generados anteriormente.
A continuación, se presenta un ejemplo:
basic_example/components/MainScene.xml
<?xml version="1.0" encoding="utf-8" ?>
<component name="MainScene" extends="Scene" initialFocus = "myVideo">
<script type="text/brightscript">
<![CDATA[
function init()
m.video = m.top.findNode("myVideo")
m.video.notificationinterval = 1
m.testLiveStream = {
title: "Livestream",
assetKey: "c-rArva4ShKVIAkNfy6HUQ",
apiKey: "",
type: "live"
}
m.testVodStream = {
title: "VOD stream"
contentSourceId: "2548831",
videoId: "tears-of-steel",
apiKey: "",
type: "vod"
}
m.testVideoStitcherVodStream = {
title: "My Stream Title",
vodConfigId: "VOD_CONFIG_ID",
networkCode: "NETWORK_CODE",
region: "LOCATION",
projectNumber: "PROJECT_NUMBER",
oAuthToken: "OAUTH_TOKEN",
apiKey: "",
title: "Video Stitcher VOD Stream",
type: "stitcherVod"
}
loadImaSdk()
end function
function loadImaSdk() as void
m.sdkTask = createObject("roSGNode", "imasdk")
m.sdkTask.observeField("sdkLoaded", "onSdkLoaded")
m.sdkTask.observeField("errors", "onSdkLoadedError")
' Set this to the stream data you would like to play.
selectedStream = m.testVideoStitcherVodStream
m.videoTitle = selectedStream.title
m.sdkTask.streamData = selectedStream
m.sdkTask.observeField("urlData", "urlLoadRequested")
m.sdkTask.video = m.video
' Setting control to run starts the task thread.
m.sdkTask.control = "RUN"
end function
basic_example/components/Sdk.xml
Sub loadStream()
sdk = m.sdk
sdk.initSdk()
setupVideoPlayer()
request = {}
streamData = m.top.streamData
if streamData.type = "live"
request = sdk.CreateLiveStreamRequest(streamData.assetKey, streamData.apiKey)
else if streamData.type = "vod"
request = sdk.CreateVodStreamRequest(streamData.contentSourceId, streamData.videoId, streamData.apiKey)
else if streamData.type = "stitcherVod"
request = sdk.createVideoStitcherVodStreamRequest(
streamData.vodConfigId,
streamData.networkCode,
streamData.region,
streamData.projectNumber,
streamData.oAuthToken
)
else
request = sdk.CreateStreamRequest()
end if
request.player = m.player
request.adUiNode = m.top.video
requestResult = sdk.requestStream(request)
If requestResult <> Invalid
print "Error requesting stream ";requestResult
Else
m.streamManager = Invalid
While m.streamManager = Invalid
sleep(50)
m.streamManager = sdk.getStreamManager()
End While
If m.streamManager = Invalid or m.streamManager["type"] <> Invalid or m.streamManager["type"] = "error"
errors = CreateObject("roArray", 1, True)
print "error ";m.streamManager["info"]
errors.push(m.streamManager["info"])
m.top.errors = errors
Else
m.top.streamManagerReady = True
addCallbacks()
m.streamManager.start()
End If
End If
End Sub
Vuelve a cargar la app para solicitar y reproducir tu transmisión de VOD personalizada.
Agrega opciones de sesión de transmisión (opcional)
Para personalizar tu solicitud de transmisión, agrega opciones de sesión para anular la configuración predeterminada de la API de Cloud Video Stitcher. Para ello, propaga el parámetro videoStitcherSessionOptions
en tu objeto StreamRequest.
Si proporcionas una opción no reconocida, la API de Cloud Video Stitcher responderá con un error HTTP 400. Consulta la guía de solución de problemas para obtener 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.
request = sdk.createVideoStitcherVodStreamRequestWithVodConfig(vodConfigId, networkCode, region, projectNumber, oAuthToken)
request.player = m.player
request.adUiNode = m.top.video
' The following session options are examples. Use session options
' that are compatible with your video stream.
sessionOptions = {
"manifestOptions": {
"bitrateOrder": "ascending"
}
}
request.videoStitcherSessionOptions = sessionOptions
requestResult = sdk.requestStream(request)
Libera espacio
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 Roku, es importante limpiar los recursos de publicación.
Sigue la guía de limpieza de VOD para quitar los recursos y activos innecesarios.