Reproduzir transmissões de VOD registradas com a API Google Cloud Video Stitcher
Este guia demonstra como usar o SDK DAI do IMA para Roku para solicitar e reproduzir uma sessão de fluxo de VOD do Google Cloud.
Este guia expande o exemplo básico do módulo Comece já guia para DAI do IMA.
Para informações sobre a integração com outras plataformas ou o uso dos SDKs do lado do cliente do IMA, consulte SDKs do Interactive Media Ads.
Configure um projeto do Google Cloud
Insira as seguintes variáveis para uso no SDK do IMA:
- Local
- A região do Google Cloud
em que 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 o usuário do integrador de vídeo função:
OAUTH_TOKEN
Leia mais sobre criação de OAuth de curta duração tokens. O token OAuth pode ser reutilizado em várias solicitações, desde que não tenha expirado.
- Código da rede
O código de rede do Ad Manager para solicitar anúncios:
NETWORK_CODE
- ID de configuração do VOD
O ID de configuração de VOD para o stream de VOD:
VOD_CONFIG_ID
Leia mais sobre como criar o ID de configuração de VOD no guia Criar um guia de configuração de VOD no Cloud stitching.
Configurar o exemplo básico
Faça o download e execute o DAI do Roku Basic do IMA Exemplo. Clique no botão no player de vídeo para iniciar o curta-metragem "Tears of Steel", que contém intervalos de anúncio a cada 30 segundos.
Solicitar um stream de VOD
Use o
sdk.createVideoStitcherVodStreamRequestWithVodConfig()
para substituir o stream de amostra pelo stream de VOD integrado ao anúncio. Você pode
usar a interface do Google Ad Manager para localizar as sessões de DAI
geradas para monitoramento e
depuração.
Na amostra existente, há instruções condicionais para determinar se é preciso
criar um StreamRequest
de VOD ou um StreamRequest
ao vivo. Adicione um novo caminho para
criar um StreamRequest
de VOD do Cloud Video Stitcher usando os valores gerados
anteriormente.
Veja 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
Atualize o app para solicitar e reproduzir seu stream de VOD personalizado.
(Opcional) Adicionar opções de sessão de streaming
Personalize sua solicitação de stream adicionando opções de sessão para substituir o padrão
configuração da API Cloud Video Stitcher preenchendo o campo
videoStitcherSessionOptions
na sua
StreamRequest
objeto.
Se você fornecer uma opção não reconhecida, o Cloud A API Video Stitcher responderá com um erro HTTP 400. Consulte o guia de solução de problemas para receber ajuda.
Por exemplo, é possível substituir as opções de manifesto com o snippet de código abaixo, que solicita dois manifestos de transmissão com renditions ordenadas do bitrate mais baixo para o mais alto.
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": {
"includeRenditions":[
{"bitrateBps": 3000, "codecs": "hvc1.1.4.L126.B0, mp4a.40.2"},
{"bitrateBps": 2000, "codecs": "avc1.64001f, mp4a.40.2"},
]
}
}
request.videoStitcherSessionOptions = sessionOptions
requestResult = sdk.requestStream(request)
Limpar
Agora que você hospedou um stream de VOD usando a API Google Cloud Video Stitcher e a solicitou usando o SDK de DAI do IMA. para Roku, é importante limpar todos os elementos do Google Cloud.
Siga o Limpeza de VOD para remover recursos desnecessários.