इंटरैक्टिव मीडिया विज्ञापन (IMA) डाइनैमिक विज्ञापन इंसर्शन (डीएआई) SDK टूल, दर्शकों की पोज़िशन और क्लाइंट-साइड विज्ञापन इवेंट ट्रैक करने के लिए, स्ट्रीम के मीडिया सेगमेंट (इन-बैंड मेटाडेटा) या स्ट्रीमिंग मैनिफ़ेस्ट फ़ाइल (इन-मैनिफ़ेस्ट मेटाडेटा) में एम्बेड की गई मेटाडेटा की जानकारी का इस्तेमाल करता है. डीएआई स्ट्रीम से मेटाडेटा, अलग-अलग फ़ॉर्मैट में उपलब्ध होता है. यह इस बात पर निर्भर करता है कि किस तरह की स्ट्रीम चलाई जा रही है. IMA DAI SDK टूल, एक ही एपीआई के ज़रिए सभी मेटाडेटा फ़ॉर्मैट को मैनेज करता है.
आपका ऐप्लिकेशन, मेटाडेटा कैप्चर करने और उसे 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 की शुरुआती गाइड देखें. गाइड के इवेंट लिसनर और स्ट्रीम शुरू करने वाले सेक्शन में, मेटाडेटा हैंडलिंग लूप शामिल होता है.
एचएलएस सीएमएएफ़ स्ट्रीम
कॉमन मीडिया ऐप्लिकेशन फ़्रेमवर्क (सीएमएएफ़) का इस्तेमाल करने वाली लीनियर डीएआई एचएलएस स्ट्रीम, आईडी3 के ज़रिए सीएमएएफ़ स्टैंडर्ड के मुताबिक, इन-बैंड eMSGv1 बॉक्स के ज़रिए टाइम किया गया मेटाडेटा पास करती हैं. ये eMSG बॉक्स, हर मीडिया सेगमेंट की शुरुआत में एम्बेड किए जाते हैं. हर आईडी3 eMSG में, स्ट्रीम में पिछली गड़बड़ी के मुकाबले पीटीएस शामिल होता है.
IMA Roku के लिए, सभी एचएलएस सीएमएएफ़ स्ट्रीम, eMSGv0 फ़ॉर्मैट का इस्तेमाल करके, इन-बैंड आईडी3 डेटा भेजती हैं. IMA, eMSGv0 फ़ॉर्मैट से मिली जानकारी को वीडियो ऑब्जेक्ट से मिली जानकारी के साथ जोड़ता है.
एचएलएस सीएमएएफ़ स्ट्रीम आईडी3 इवेंट को सही तरीके से पार्स करने के लिए, आपको अपना
वीडियो ऑब्जेक्ट स्ट्रीम के अनुरोध में
StreamRequest.videoObjectका इस्तेमाल करके भेजना होगा.