ה-SDK של Interactive Media Ads (IMA) Dynamic Ad Insertion (DAI) (ה-SDK של IMA להצגת מודעות דינמיות) מסתמך על מידע מטא-נתונים שמוטמע בפלחי המדיה של הסטרימינג (מטא-נתונים בתוך הסטרימינג) או בקובץ המניפסט של הסטרימינג (מטא-נתונים במניפסט) כדי לעקוב אחרי המיקום של הצופים ואירועי מודעות בצד הלקוח. מטא-נתונים זמינים מסטרימינג של DAI בפורמטים שונים, בהתאם לסוג הסטרימינג שמופעל. IMA DAI SDK מטפל בכל הפורמטים של המטא-נתונים באמצעות API יחיד.
האפליקציה אחראית לתיעוד המטא-נתונים ולהעברתם אל IMA DAI SDK. ערכת ה-SDK מציעה את השיטה
StreamManager.onMessage()
להעברת המידע הזה. השיטה הזו מעבירה מטא-נתונים בצורה של אובייקט msg
שסופק על ידי יציאת roVideo. אחר כך, אובייקטים אלה מעובדים על ידי IMA DAI SDK כדי לקבוע את התזמון של אירועי המודעות. היא מקבלת ארגומנט יחיד:
msg
: אובייקט מסוג msg שסופק על ידי יציאת roVideo.
קוד לדוגמה של מטא-נתונים
הנה דוגמה לאופן הטיפול במטא-נתונים מהיציאה של roVideo והעברתם אל IMA DAI SDK דרך 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
מידע נוסף על שילוב מטא-נתונים של סטרימינג לטיפול בלולאות באפליקציה זמין במדריך למתחילים בנושא IMA Roku. הקטע בנושא event listener והתחלת הסטרימינג במדריך מכיל את לולאת הטיפול במטא-נתונים.
שידורי HLS CMAF
בסטרימינג לינארי של DAI ב-HLS באמצעות Common Media Application Framework (CMAF), מטא-נתונים מתוזמנים מועברים דרך תיבות eMSGv1 בתוך פס התדרים בהתאם לתקן ID3 דרך CMAF. תיבות ה-eMSG האלה מוטמעות בתחילת כל פלח מדיה, וכל eMSG של ID3 מכיל PTS ביחס לאי הרציפות האחרונה בזרם.
ב-IMA Roku, כל הסטרימינג בפורמט HLS CMAF שולח נתוני ID3 בתוך הפס באמצעות הפורמט eMSGv0. IMA משלב מידע שסופק על ידי פורמט eMSGv0 עם מידע מאובייקט הווידאו.
כדי לאפשר ניתוח תקין של אירועי ID3 של HLS CMAF stream, צריך לשלוח את אובייקט הווידאו בבקשת הסטרימינג באמצעות StreamRequest.videoObject
.