Streams de VOD do Play registadas na API Google Cloud Video Stitcher
Este guia demonstra como usar o SDK para DAI do IMA para Roku para pedir e reproduzir uma sessão de stream VOD do Google Cloud.
Este guia expande o exemplo básico do guia de introdução para o IMA DAI.
Para obter informações sobre a integração com outras plataformas ou sobre a utilização dos SDKs do lado do cliente para IMA, consulte os SDKs para Anúncios Multimédia Interativos.
Se quiser ver ou acompanhar uma integração de exemplo concluída, transfira o exemplo do Editor de vídeo do Google Cloud.
Configure um projeto do Google Cloud
Introduza as seguintes variáveis para utilização no SDK para IMA:
- Location
- A região do Google Cloud
onde a configuração de VOD foi criada:
LOCATION
- Número do projeto
- O número do projeto do Google Cloud que usa a API Video Stitcher:
PROJECT_NUMBER
- Token OAuth
Um token OAuth de curta duração de uma conta de serviço com a função de utilizador do Video Stitcher:
OAUTH_TOKEN
Leia mais acerca da criação de tokens OAuth de curta duração. O token OAuth pode ser reutilizado em vários pedidos, desde que não tenha expirado.
- Código de rede
O código de rede do Ad Manager para pedir anúncios:
NETWORK_CODE
- ID da configuração de VOD
O ID da configuração de VOD para a stream VOD:
VOD_CONFIG_ID
Leia mais acerca da criação do ID de configuração de VOD no guia de criação de configuração de VOD da união na nuvem.
Configure o exemplo básico
Transfira e execute o IMA Roku DAI Basic Example. Clique no botão de reprodução no leitor de vídeo para iniciar o filme curto "Tears of Steel", que contém pausas para anúncios a cada 30 segundos.
Peça uma stream de VOD
Use a função
sdk.createVideoStitcherVodStreamRequestWithVodConfig()
para substituir a stream de exemplo pela sua stream VOD com anúncios integrados. Pode usar a IU do Google Ad Manager para localizar as sessões de DAI geradas para monitorização e depuração.
No exemplo existente, existem declarações condicionais para determinar se deve construir um VOD StreamRequest
ou uma stream em direto StreamRequest
. Adicione um novo caminho para construir um VOD do Cloud Video Stitcher StreamRequest
usando os valores gerados anteriormente.
Segue-se um exemplo:
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
Recarregue a app para pedir e ver a sua stream de VOD personalizada.
(Opcional) Adicione opções de sessão de streaming
Personalize o seu pedido de stream adicionando opções de sessão para substituir a configuração predefinida da API Cloud Video Stitcher preenchendo o parâmetro videoStitcherSessionOptions
no objeto StreamRequest.
Se fornecer uma opção não reconhecida, a API Cloud Video Stitcher responde com um erro HTTP 400. Consulte o guia de resolução de problemas para obter assistência.
Por exemplo, pode substituir as opções do manifesto com o seguinte fragmento do código, que pede dois manifestos de streams com representações ordenadas da taxa de bits mais baixa para a mais 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)
Limpar
Agora que alojou com êxito uma stream VOD usando a API Google Cloud Video Stitcher e a pediu usando o SDK DAI para IMA para Roku, é importante limpar todos os recursos de publicação.
Siga o guia de limpeza de VOD para remover recursos e recursos multimédia desnecessários.