互動式媒體廣告 (IMA) 動態廣告插入 SDK (DAI) 會依據串流媒體片段中嵌入的中繼資料資訊 (頻內中繼資料),或串流資訊清單檔案中的中繼資料 (資訊清單中繼資料),追蹤觀眾的位置和用戶端廣告事件。視播放的串流類型而定,DAI 串流會提供不同格式的中繼資料。IMA DAI SDK 會透過單一 API 處理所有中繼資料格式。
您的應用程式負責擷取中繼資料,並轉送至 IMA DAI SDK。SDK 提供 StreamManager.onMessage()
方法來傳遞這項資訊。這個方法會轉送 roVideo 埠提供的 msg
物件形式的中繼資料。接著,IMA DAI SDK 會處理這些物件,以建立廣告事件的時間軸。這個函式會採用單一引數:
msg
:roVideo 埠提供的 msg 型別物件。
中繼資料程式碼範例
以下範例說明如何處理 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 入門指南。本指南的事件監聽器和串流啟動部分包含中繼資料處理迴圈。
HTTP 即時串流 CMAF 串流
使用通用媒體應用程式架構 (CMAF) 的線性 DAI HLS 串流,會透過頻內 eMSGv1 方塊傳遞時間碼中繼資料,並遵循「透過 CMAF 的 ID3」標準。這些 eMSG 方塊會嵌入每個媒體片段的開頭,每個 ID3 eMSG 都包含相對於串流中最後一個不連續點的 PTS。
對於 IMA Roku,所有 HLS CMAF 串流都會使用 eMSGv0 格式傳送頻內 ID3 資料。 IMA 會結合 eMSGv0 格式提供的資訊和影片物件的資訊。
如要正確剖析 HTTP 即時串流 CMAF 串流 ID3 事件,請務必使用 StreamRequest.videoObject
,在串流要求中傳送影片物件。