Processar metadados cronometrados em streams da DAI linear

Selecione a plataforma:HTML5 Roku

O SDK de inserção dinâmica de anúncios (DAI) do Interactive Media Ads (IMA) depende de informações de metadados incorporadas nos segmentos de mídia do stream (metadados na banda) ou no arquivo de manifesto de streaming (metadados no manifesto) para rastrear as posições dos espectadores e os eventos de anúncios do lado do cliente. Os metadados estão disponíveis no fluxo da DAI em diferentes formatos, dependendo do tipo de fluxo que está sendo reproduzido. O SDK da IMA DAI processa todos os formatos de metadados por uma única API.

Seu app é responsável por capturar metadados e encaminhá-los ao SDK DAI do IMA. O SDK oferece o método StreamManager.onMessage() para transmitir essas informações. Esse método encaminha metadados na forma de um objeto msg fornecido pela porta roVideo. Em seguida, esses objetos são processados pelo SDK de DAI do IMA para estabelecer o tempo dos eventos de anúncio. Ele usa um único argumento:

  • msg: um objeto de tipo de mensagem fornecido pela porta roVideo.

Exemplo de código de metadados

Confira um exemplo de como processar os metadados da porta roVideo e transmiti-los ao SDK DAI do IMA usando StreamManager.onMessage().

Sub runLoop()
  ' Forward all timed metadata events to IMA.
  m.top.video.timedMetaDataSelectionKeys = ["*"]

  ' Cycle through all the fields and set listeners.
  ' IMPORTANT: Failure to listen to the position and timedmetadata fields could
  ' result in ad impressions not being reported.
  m.port = CreateObject("roMessagePort")
  fields = m.top.video.getFields()
  for each field in fields
    m.top.video.observeField(field, m.port)
  end for

  while True
    msg = wait(1000, m.port)
    if m.top.video = invalid
      print "exiting"
      exit while
    end if

    m.streamManager.onMessage(msg)
    currentTime = m.top.video.position
    If currentTime > 3 And not m.top.adPlaying
       m.top.video.enableTrickPlay = true
    End If
  end while
End Sub

Para mais informações sobre como incorporar os metadados de stream de processamento de loop no seu app, consulte o guia de introdução da IMA para Roku. A seção de listener de eventos e início do stream do guia contém o loop de processamento de metadados.

Transmissões HLS CMAF

Os fluxos HLS de DAI linear que usam o Common Media Application Framework (CMAF) transmitem metadados com carimbo de data/hora por caixas eMSGv1 em banda seguindo o padrão ID3 por CMAF. Essas caixas eMSG são incorporadas no início de cada segmento de mídia, e cada eMSG ID3 contém um PTS relativo à última descontinuidade no stream.

Para a IMA Roku, todas as transmissões HLS CMAF enviam dados ID3 na banda usando o formato eMSGv0. A IMA combina informações fornecidas pelo formato eMSGv0 com informações do objeto de vídeo.

Para ativar a análise adequada de eventos ID3 de stream CMAF HLS, envie seu objeto de vídeo na solicitação de stream usando StreamRequest.videoObject.