लीनियर डीएआई स्ट्रीम में, तय समय के मेटाडेटा को मैनेज करना

इंटरैक्टिव मीडिया विज्ञापन (IMA) डाइनैमिक ऐड इंसर्शन SDK (डीएआई), इन चीज़ों पर निर्भर करता है स्ट्रीम के मीडिया सेगमेंट में एम्बेड की गई मेटाडेटा की जानकारी (इन-बैंड मेटाडेटा), का इस्तेमाल किया जा सकता है. पोज़िशन और क्लाइंट-साइड विज्ञापन इवेंट बनाए जा सकते हैं. मेटाडेटा, डीएआई स्ट्रीम से उपलब्ध है अलग-अलग फ़ॉर्मैट में करना चाहिए. यह इस बात पर निर्भर करता है कि किस तरह की स्ट्रीम चल रही है. IMA डीएआई SDK टूल, एक एपीआई की मदद से सभी मेटाडेटा फ़ॉर्मैट का इस्तेमाल करता है.

मेटाडेटा कैप्चर करके, उसे IMA डीएआई SDK टूल को भेजना आपके ऐप्लिकेशन की ज़िम्मेदारी है. यह SDK टूल, StreamManager.onMessage() तरीका है. यह तरीका मेटाडेटा को इस रूप में फ़ॉरवर्ड करता है: roVideo पोर्ट से मिला msg ऑब्जेक्ट. इसके बाद, इन ऑब्जेक्ट को प्रोसेस करने के लिए यह तरीका अपनाया जाता है: IMA डीएआई SDK टूल का इस्तेमाल करके, विज्ञापन इवेंट के लिए समय तय कर सकता है. इसके लिए, तर्क:

  • msg: मैसेज टाइप वाला ऑब्जेक्ट, जो roVideo पोर्ट से मिलता है.

मेटाडेटा नमूना कोड

यहां उदाहरण के तौर पर बताया गया है कि roVideo पोर्ट से मेटाडेटा को कैसे मैनेज किया जाए और इसे StreamManager.onMessage() के ज़रिए IMA डीएआई 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 के इस्तेमाल के लिए शुरुआती निर्देश. कॉन्टेंट बनाने इवेंट लिसनर और स्ट्रीम शुरू होने का सेक्शन गाइड में दी गई गाइड में, मेटाडेटा हैंडलिंग लूप शामिल है.

एचएलएस सीएमएएफ़ स्ट्रीम

कॉमन मीडिया ऐप्लिकेशन फ़्रेमवर्क (सीएमएएफ़) पास का इस्तेमाल करके लीनियर डीएआई एचएलएस स्ट्रीम करना ID3 से लेकर अब तक इन-बैंड eMSGv1 बॉक्स के ज़रिए समयबद्ध मेटाडेटा CMAF स्टैंडर्ड. ये eMSG बॉक्स हैं हर मीडिया सेगमेंट की शुरुआत में एम्बेड किया गया हो, जिसमें हर ID3 eMSG में शामिल हो एक PTS दिखाया जाता है, जो स्ट्रीम में असमानता के बारे में होता है.

IMA Roku के लिए, सभी HLS CMAF स्ट्रीम, eMSGv0 फ़ॉर्मैट का इस्तेमाल करके इन-बैंड ID3 डेटा भेजते हैं. IMA, eMSGv0 फ़ॉर्मैट से दी गई जानकारी को जानकारी के साथ मिलाता है को वीडियो ऑब्जेक्ट से निकाल दिया जाएगा.

HLS CMAF स्ट्रीम के ID3 इवेंट को सही तरीके से पार्स करने के लिए, आपको StreamRequest.videoObject का इस्तेमाल करके, स्ट्रीम अनुरोध में अपना वीडियो ऑब्जेक्ट भेजना होगा.