互动式媒体广告 (IMA) 动态广告插播 SDK (DAI) 依赖于 流的媒体片段中嵌入的元数据信息(带内元数据); 也可以在流式传输清单文件(清单中元数据)中跟踪观看者 位置和客户端广告事件。可从 DAI 视频流中获取元数据 采用不同的格式,具体取决于正在播放的直播类型。IMA DAI SDK 通过单个 API 处理所有元数据格式。
您的应用负责捕获元数据并将其转发到 IMA DAI SDK。SDK 提供了
StreamManager.onMessage()
方法来传递此信息。此方法以
roVideo 端口提供的 msg
对象。然后,系统会通过
使用 IMA DAI SDK 确定广告事件的时间安排。只需要一个
参数:
msg
:roVideo 端口提供的消息类型对象。
元数据示例代码
以下示例展示了如何处理来自 roVideo 端口和
通过 StreamManager.onMessage()
将其传递给 IMA DAI SDK。
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
详细了解如何整合循环处理数据流元数据 进入应用后,请查看 IMA Roku 入门指南。通过 事件监听器和数据流开始部分 包含元数据处理循环。
HLS CMAF 视频流
使用通用媒体应用框架 (CMAF) 遍历的线性 DAI HLS 视频流 通过带内 eMSGv1 框进入 ID3 到 CMAF 标准。这些 eMSG 箱 嵌入在每个媒体段开头,其中每个 ID3 eMSG 包含 相对于视频流中最后一次不连续性的 PTS。
对于 IMA Roku,所有 HLS CMAF 视频流都使用 eMSGv0 格式发送带内 ID3 数据。 IMA 会将 eMSGv0 格式提供的信息与 从视频对象请求广告
为了正确解析 HLS CMAF 数据流 ID3 事件,您必须将
来请求视频流对象
StreamRequest.videoObject
。