טיפול במטא-נתונים מתוזמנים בשידורים לינאריים של הטמעת מודעות דינמיות (DAI)

Select platform:‎ HTML5 Roku

ה-SDK של מודעות מדיה אינטראקטיביות (IMA) Dynamic Ad Insertion (DAI) מסתמך על מידע מטא-נתונים שמוטמע בפלחי המדיה של הסטרימינג (מטא-נתונים בתוך הסטרימינג), או בקובץ המניפסט של הסטרימינג (מטא-נתונים במניפסט), כדי לעקוב אחרי מיקומי הצופים ואירועי מודעות בצד הלקוח. מטא-נתונים זמינים מסטרימינג של 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.