Usar o SDK de DAI do IMA no Roku

Reproduzir transmissões de VOD registradas com a API Google Cloud Video Stitcher

Este guia demonstra como usar o SDK IMA DAI para Roku para solicitar e reproduzir uma sessão de streaming VOD do Google Cloud.

Este guia expande o exemplo básico do Guia de início de uso do IMA DAI.

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.

Se você quiser conferir ou seguir uma integração de exemplo completa, faça o download do exemplo de integrador de vídeos do Cloud.

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 a função de usuário do Video Stitcher:

OAUTH_TOKEN

Leia mais sobre como criar tokens OAuth de curta duração. 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 da configuração de VOD para a transmissão 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 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 um stream de VOD

Use a função sdk.createVideoStitcherVodStreamRequestWithVodConfig() para substituir o fluxo de amostra pelo fluxo de VOD com anúncios. Você pode usar a interface do Google Ad Manager para localizar as sessões de DAI geradas para monitoramento e depuração.

No exemplo atual, há instruções condicionais para determinar se é necessário 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

Recarregue o app para solicitar e assistir a transmissão VOD personalizada.

(Opcional) Adicionar opções de sessão de streaming

Personalize sua solicitação de transmissão adicionando opções de sessão para substituir a configuração padrão da API Cloud Video Stitcher preenchendo o parâmetro videoStitcherSessionOptions no objeto StreamRequest.

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.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 você hospedou um fluxo de VOD usando a API Google Cloud Video Stitcher e o SDK DAI do IMA para Roku, é importante limpar todos os recursos de veiculação.

Siga o guia Limpeza de VOD para remover recursos e recursos desnecessários.