Use o SDK de DAI para IMA no Roku

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.