Reproduzir transmissões ao vivo registradas com a API Google Cloud Video Stitcher
Este guia demonstra como usar o SDK de DAI do IMA para Roku para solicitar e reproduzir transmissão ao vivo de um evento registrado com o Editor de vídeos do Google Cloud API, e como inserir um intervalo de anúncio durante a reprodução.
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 ativa 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 usuário do Video Stitcher:
OAUTH_TOKEN
Saiba mais sobre como criar credenciais de curta duração para contas de serviço. O token OAuth pode ser reutilizado em várias solicitações, desde que não tenha sido expirou.
- Código da rede
O código de rede do Ad Manager para solicitar anúncios:
NETWORK_CODE
- ID da configuração ao vivo
- O ID da configuração ao vivo que você especificou ao criar o evento de transmissão ao vivo:
LIVE_CONFIG_ID
- Chave de recurso personalizada
- A chave de recurso personalizada do Ad Manager gerada durante o processo de criação de um
configuração para um evento de transmissão ao vivo
com a API Video Stitcher:
CUSTOM_ASSET_KEY
Faça o download do exemplo básico
Faça o download e execute o exemplo básico de DAI do IMA para Roku. Clique no botão de reproduçã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 uma transmissão ao vivo
Para substituir a amostra de stream pela transmissão ao vivo do integrador de vídeos do Cloud, use o
sdk.createVideoStitcherLiveStreamRequest()
função. Quando a sessão de DAI estiver ativa, use a interface do Google Ad Manager para
localizar as sessões de DAI geradas
para fins de 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. Para que funcione com a API Google Cloud Video Stitcher, adicione um novo caminho para criar um StreamRequest
ao vivo da Cloud Video Stitcher usando os valores gerados anteriormente.
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.testVideoStitcherLiveStream = {
title: "Video Stitcher Livestream",
customAssetKey: "CUSTOM_ASSET_KEY",
networkCode: "NETWORK_CODE",
liveConfigId: "LIVE_CONFIG_ID",
region: "LOCATION",
projectNumber: "PROJECT_NUMBER",
oAuthToken: "OAUTH_TOKEN",
apiKey: "",
type: "stitcherLive"
}
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.testVideoStitcherLiveStream
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 = "stitcherLive"
request = sdk.CreateVideoStitcherLiveStreamRequest(
streamData.customAssetKey,
streamData.networkCode,
streamData.liveConfigId,
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
Depois de adicionar essas mudanças, atualize o app para solicitar e executar seu transmissão ao vivo.
(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, a API Cloud Video Stitcher vai 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.createVideoStitcherLiveStreamRequest(customAssetKey, networkCode, liveConfigId, 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)
Inserir um intervalo de anúncio
A API Google Cloud Video Stitcher insere anúncios recuperados da tag de anúncio para cada intervalo de anúncio. Os intervalos de anúncio são indicados no manifesto usando marcadores de anúncio. Os marcadores de anúncio são inseridos pelo codificador de transmissão ao vivo.
Se você estiver usando sua própria transmissão ao vivo, insira o marcador de anúncio. Para mais informações sobre os marcadores de anúncio HLS e DASH compatíveis, consulte a documentação de marcadores de anúncio.
Se você criou uma transmissão ao vivo usando a API Google Cloud Livestream, inserir um evento do canal de intervalo de anúncio.
O anúncio é reproduzido imediatamente após o intervalo de anúncio ser inserido.
Limpar
Agora que você organizou uma transmissão ao vivo 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 da transmissão ao vivo para remover recursos desnecessários.