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

ערכת ה-SDK להטמעת מודעות דינמיות (DAI) מבוססת על מטא-נתונים שמוטמעים בקטעי המדיה של השידור (מטא-נתונים מסוג in-band), או בקובץ המניפסט בסטרימינג (מטא-נתונים במניפסט) כדי לעקוב מיקומי מודעות ואירועי מודעות בצד הלקוח. המטא-נתונים זמינים בזרם DAI בפורמטים שונים, בהתאם לסוג השידור שמופעל. IMA DAI ערכת ה-SDK מטפלת בכל הפורמטים של המטא-נתונים באמצעות ממשק API אחד.

האפליקציה שלך אחראית לתיעוד מטא-נתונים ולהעברה שלהם אל IMA DAI SDK. ה-SDK מציע את StreamManager.onMessage() שיטה להעברת המידע הזה. השיטה הזו מעבירה מטא-נתונים בצורת אובייקט msg סופק על ידי יציאת roVideo. לאחר מכן, האובייקטים האלה עוברים עיבוד את IMA DAI SDK כדי לקבוע את התזמון של אירועי המודעות. נדרשות דקה ארגומנט:

  • 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 לתחילת העבודה. קטע התחלת השידור והאזנה לאירועים במדריך מכיל את לולאת הטיפול במטא-נתונים.

שידורים של HLS ב-CMAF

שידורים לינאריים של DAI HLS באמצעות אישור Common Media Application Framework (CMAF) מטא-נתונים מתוזמנים באמצעות תיבות eGSv1 בתוך רצועה אחרי ID3 עד תקן CMAF. תיבות ה-eMSG האלה שמוטמע בתחילת כל קטע מדיה, כאשר כל e הרלוונטית של ID3 מכיל PTS ביחס לאי הרציפות האחרון בזרם.

ב-IMA Roku, כל שידורי HLS CMAF שולחים נתוני ID3 בטווח התדרים באמצעות הפורמט eGSv0. IMA משלבת מידע שסופק על ידי הפורמט eGSv0 עם מידע מאובייקט הסרטון.

כדי לאפשר ניתוח תקין של אירועי מזהה 3 של מקור הנתונים ב-HLS, צריך לשלוח את אובייקט וידאו בבקשת הסטרימינג באמצעות StreamRequest.videoObject