O SDK de inserção de anúncios dinâmicos (DAI, na sigla em inglês) do Interactive Media Ads (IMA) depende de informações de metadados incorporadas aos segmentos de mídia do stream (metadados em banda) ou do 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 stream da DAI em formatos diferentes, dependendo do tipo de transmissão em exibição. O SDK de DAI do IMA lida com todos os formatos de metadados usando uma única API.
Seu app é responsável por capturar metadados e encaminhá-los ao SDK de DAI do IMA. O SDK oferece o método
StreamManager.onMessage()
para transmitir essas informações. Esse método encaminha os metadados na forma de um objeto
msg
fornecido pela porta roVideo. Esses objetos são processados pelo SDK de DAI do IMA para estabelecer o tempo dos eventos de anúncios. Ela usa um único
argumento:
msg
: um objeto do tipo de mensagem fornecido pela porta roVideo.
Exemplo de código de metadados
Veja um exemplo de como gerenciar os metadados da porta de Roku e fazer a transmissão deles ao SDK de 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 ao seu app, consulte o Guia explicativo do IMA para Roku. A seção sobre listener de eventos e início de stream do guia contém o loop de processamento de metadados.
Streams HLS CMAF
Os streams HLS lineares da DAI que usam o Common Media Application Framework (CMAF) transmitem metadados cronometrados por caixas eMSGv1 na banda seguindo o padrão ID3 a CMAF. Essas caixas de 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 o IMA Roku, todos os streams CMAF HLS enviam dados ID3 na banda usando o formato eMSGv0. O IMA combina as informações fornecidas pelo formato eMSGv0 com informações do objeto de vídeo.
Para ativar a análise adequada de eventos ID3 do fluxo do CMAF do HLS, envie o
objeto de vídeo na solicitação de stream usando
StreamRequest.videoObject
.