Reproducir emisiones de VOD registradas con la API Video Stitcher de Google Cloud
En esta guía se muestra cómo usar el SDK de IMA DAI para Roku para solicitar y reproducir una sesión de emisión de vídeo bajo demanda de Google Cloud.
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 de VOD:
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 tokens de OAuth de corta duración. 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 VOD
El ID de configuración de VOD de la emisión de VOD:
VOD_CONFIG_ID
Consulta más información sobre cómo crear el ID de configuración de VOD en la guía de creación de configuraciones de VOD de Cloud Stitching.
Configurar 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 vídeo para ver el cortometraje "Tears of Steel", que contiene pausas publicitarias cada 30 segundos.
Solicitar una emisión de VOD
Usa la función
sdk.createVideoStitcherVodStreamRequestWithVodConfig()
para sustituir la secuencia de ejemplo por tu secuencia de VOD con anuncios insertados. Puede 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, hay instrucciones condicionales para determinar si se debe crear un vídeo bajo demanda StreamRequest
o un vídeo en directo StreamRequest
. Añade una ruta para crear un vídeo a la carta de Cloud Video Stitcher StreamRequest
con los valores generados anteriormente.
Veamos 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 aplicación para solicitar y reproducir tu emisión de VOD personalizada.
(Opcional) Añadir opciones de sesión de streaming
Para personalizar tu solicitud de emisión, añade opciones de sesión para anular la configuración predeterminada de la API Cloud Video Stitcher. Para ello, rellena el parámetro videoStitcherSessionOptions
en tu objeto StreamRequest.
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.
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)
Limpieza
Ahora que has alojado correctamente una emisión de vídeo bajo demanda con la API Video Stitcher de Google Cloud y la has solicitado con el SDK de DAI de IMA para Roku, es importante que elimines los recursos de servicio.
Sigue la guía para limpiar vídeos bajo demanda para quitar los recursos y los activos que no necesites.