ইন্টার্যাক্টিভ মিডিয়া বিজ্ঞাপন (IMA) ডায়নামিক বিজ্ঞাপন ইনসার্শন SDK (DAI) স্ট্রিমের মিডিয়া সেগমেন্টে (ইন-ব্যান্ড মেটাডেটা) বা স্ট্রিমিং ম্যানিফেস্ট ফাইলে (ইন-ম্যানিফেস্ট মেটাডেটা) এম্বেড করা মেটাডেটা তথ্যের উপর নির্ভর করে দর্শকদের পজিশন ও ক্লায়েন্ট-সাইড বিজ্ঞাপন ইভেন্ট ট্র্যাক করে। DAI স্ট্রিম থেকে মেটাডেটা বিভিন্ন ফর্ম্যাটে উপলভ্য, যা নির্ভর করে কোন ধরনের স্ট্রিম চালানো হচ্ছে তার উপর। IMA DAI SDK একটি API-এর মাধ্যমে সব মেটাডেটা ফর্ম্যাট ম্যানেজ করে।
আপনার অ্যাপ মেটাডেটা ক্যাপচার করে IMA DAI SDK-তে ফরওয়ার্ড করার জন্য দায়বদ্ধ। এই তথ্য পাস করার জন্য SDK
StreamManager.onMessage()
পদ্ধতি অফার করে। এই পদ্ধতি roVideo পোর্ট দ্বারা প্রদান করা
msg অবজেক্টের আকারে মেটাডেটা ফরওয়ার্ড করে। বিজ্ঞাপন ইভেন্টের টাইমিং সেট করতে,
IMA DAI SDK-এর মাধ্যমে এইসব অবজেক্ট প্রসেস করা হয়। এতে একটি মাত্র
আর্গুমেন্ট লাগে:
msg: roVideo পোর্ট থেকে পাওয়া মেসেজ টাইপ অবজেক্ট।
মেটাডেটা স্যাম্পেল কোড
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 শুরু করার নির্দেশিকা দেখুন। গাইডের ইভেন্ট লিসেনার ও স্ট্রিম স্টার্ট বিভাগে মেটাডেটা হ্যান্ডলিং লুপ থাকে।
স্ট্রিম ফর্ম্যাট ও কন্টেনার সংক্রান্ত প্রয়োজনীয়তা
Roku-তে ক্লায়েন্ট-সাইড বিজ্ঞাপন ট্র্যাকিং চালু করতে, আপনাকে অবশ্যই মিডিয়া সেগমেন্ট ব্যবহার করতে হবে যা আপনার DAI স্ট্রিমে কাজ করে এমন কন্টেনার ফর্ম্যাটে প্যাকেজ করা থাকে। এই প্রসেস Roku OS-কে টাইমড মেটাডেটা এক্সট্র্যাক্ট করতে দেয়।
Roku Media Player নিম্নলিখিত কন্টেনার ফর্ম্যাটে ইন-ব্যান্ড ID3 মেটাডেটা এক্সট্র্যাকশন সমর্থন করে:
- MPEG-2 ট্রান্সপোর্ট স্ট্রিম (TS)
- ফ্র্যাগমেন্টেড MP4
- কমন মিডিয়া অ্যাপ্লিকেশন ফর্ম্যাট (CMAF)
র-এলিমেন্টারি অডিও স্ট্রিম, যেমন র-অ্যাডভান্সড অডিও কোডিং (AAC) সেগমেন্ট, Roku OS-এ টাইমড মেটাডেটার জন্য কাজ করে না। Roku Media Player র AAC অডিও স্ট্রিম থেকে ID3 টাইমড মেটাডেটা এক্সট্র্যাক্ট করতে পারে না, যার ফলে IMA SDK মেটাডেটা ইভেন্ট রিসিভ করতে এবং বিজ্ঞাপনের ইম্প্রেশন বা ট্র্যাকিং বিকন পাঠাতে পারে না। সব অডিও-অনলি ও অডিও-রেন্ডিশন স্ট্রিমের জন্য, আপনাকে অবশ্যই TS, MP4 বা CMAF-এর মতো কাজ করে এমন কন্টেনার ফর্ম্যাট প্যাকেজিং সহ স্ট্রিম ব্যবহার করতে হবে।
HLS CMAF স্ট্রিম
কমন মিডিয়া অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (CMAF) ব্যবহার করে লিনিয়ার DAI HLS স্ট্রিম, CMAF-এর মাধ্যমে ID3 স্ট্যান্ডার্ড অনুসরণ করে ইন-ব্যান্ড eMSGv1 বক্সের মাধ্যমে টাইমড মেটাডেটা পাস করে। এই eMSG বক্সগুলি প্রতিটি মিডিয়া সেগমেন্টের শুরুতে এম্বেড করা হয়, প্রতিটি ID3 eMSG-তে স্ট্রিমে শেষ ডিসকন্টিনিউইটির সাথে সম্পর্কিত একটি PTS থাকে।
IMA Roku-এর জন্য, সব HLS CMAF স্ট্রিম eMSGv0 ফর্ম্যাট ব্যবহার করে ইন-ব্যান্ড ID3 ডেটা পাঠায়। IMA, eMSGv0 ফর্ম্যাটের মাধ্যমে প্রদান করা তথ্য ভিডিও অবজেক্ট থেকে পাওয়া তথ্যের সাথে একত্রিত করে।
HLS CMAF স্ট্রিম ID3 ইভেন্টের সঠিক পার্সিং চালু করতে, আপনাকে
StreamRequest.videoObject ব্যবহার করে স্ট্রিম অনুরোধে ভিডিও অবজেক্ট পাঠাতে হবে।