Cómo controlar metadatos temporizados en transmisiones de DAI lineales

Selecciona la plataforma: HTML5 Roku

El SDK de inserción de anuncios dinámicos (DAI) de los SDKs de anuncios multimedia interactivos (IMA) se basa en la información de metadatos incorporada en los segmentos de medios de la transmisión (metadatos integrados) o en el archivo de manifiesto de transmisión (metadatos del manifiesto) para hacer un seguimiento de las posiciones de los usuarios y los eventos de anuncios del cliente. Los metadatos están disponibles en la transmisión de DAI en diferentes formatos, según el tipo de transmisión que se reproduzca. El SDK de IMA DAI controla todos los formatos de metadatos a través de una sola API.

Tu app es responsable de capturar los metadatos y reenviarlos al SDK de DAI de IMA. El SDK ofrece el método StreamManager.onMessage() para pasar esta información. Este método reenvía metadatos en forma de un objeto msg proporcionado por el puerto roVideo. Luego, el SDK de IMA DAI procesa estos objetos para establecer la sincronización de los eventos de anuncios. Toma un solo argumento:

  • msg: Es un objeto de tipo msg proporcionado por el puerto roVideo.

Código de muestra de metadatos

A continuación, se muestra un ejemplo de cómo controlar los metadatos del puerto roVideo y pasarlos al SDK de DAI de IMA a través de 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

Si deseas obtener más información para incorporar los metadatos de transmisión de control de bucle en tu app, consulta la guía de introducción a IMA Roku. La sección de inicio del objeto de escucha de eventos y de la transmisión de la guía contiene el bucle de control de metadatos.

Transmisiones CMAF de HLS

Las transmisiones HLS de DAI lineal que usan el marco de trabajo de Common Media Application Format (CMAF) pasan metadatos cronometrados a través de casillas eMSGv1 integradas según el estándar ID3 a través de CMAF. Estos cuadros eMSG se incorporan al principio de cada segmento de medios, y cada eMSG de ID3 contiene un PTS relativo a la última discontinuidad en el flujo.

En el caso de IMA Roku, todos los flujos CMAF de HLS envían datos ID3 integrados con el formato eMSGv0. IMA combina la información proporcionada por el formato eMSGv0 con la información del objeto de video.

Para habilitar el análisis adecuado de los eventos ID3 de la transmisión CMAF de HLS, debes enviar tu objeto de video en la solicitud de transmisión con StreamRequest.videoObject.