রৈখিক DAI স্ট্রীমে টাইমড মেটাডেটা পরিচালনা করুন

প্ল্যাটফর্ম নির্বাচন করুন: HTML5 Roku

ইন্টারেক্টিভ মিডিয়া অ্যাডস (IMA) ডাইনামিক অ্যাড ইনসারশন SDK (DAI) দর্শকদের অবস্থান এবং ক্লায়েন্ট-সাইড বিজ্ঞাপন ইভেন্ট ট্র্যাক করার জন্য স্ট্রিমের মিডিয়া সেগমেন্টে (ইন-ব্যান্ড মেটাডেটা) বা স্ট্রিমিং ম্যানিফেস্ট ফাইলে (ইন-ম্যানিফেস্ট মেটাডেটা) এমবেড করা মেটাডেটা তথ্যের উপর নির্ভর করে। প্লে করা স্ট্রিমের ধরনের উপর নির্ভর করে, DAI স্ট্রিম থেকে মেটাডেটা বিভিন্ন ফরম্যাটে পাওয়া যায়। IMA DAI SDK একটিমাত্র API-এর মাধ্যমে সমস্ত মেটাডেটা ফরম্যাট পরিচালনা করে।

আপনার অ্যাপ মেটাডেটা সংগ্রহ করে তা 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 গেটিং স্টার্টেড গাইডটি দেখুন। গাইডটির ইভেন্ট লিসেনার এবং স্ট্রিম স্টার্ট বিভাগে মেটাডেটা হ্যান্ডলিং লুপটি রয়েছে।

এইচএলএস সিএমএএফ স্ট্রিম

কমন মিডিয়া অ্যাপ্লিকেশন ফ্রেমওয়ার্ক (CMAF) ব্যবহারকারী লিনিয়ার DAI HLS স্ট্রিমগুলো ID3 থেকে CMAF স্ট্যান্ডার্ড অনুসরণ করে ইন-ব্যান্ড eMSGv1 বক্সের মাধ্যমে টাইমড মেটাডেটা প্রেরণ করে। এই eMSG বক্সগুলো প্রতিটি মিডিয়া সেগমেন্টের শুরুতে এমবেড করা থাকে এবং প্রতিটি ID3 eMSG-তে স্ট্রিমের সর্বশেষ বিচ্ছিন্নতার সাপেক্ষে একটি PTS থাকে।

IMA Roku-এর ক্ষেত্রে, সমস্ত HLS CMAF স্ট্রিম eMSGv0 ফরম্যাট ব্যবহার করে ইন-ব্যান্ড ID3 ডেটা পাঠায়। IMA, eMSGv0 ফরম্যাট থেকে প্রাপ্ত তথ্যের সাথে ভিডিও অবজেক্টের তথ্যকে একত্রিত করে।

HLS CMAF স্ট্রিম ID3 ইভেন্টগুলির সঠিক পার্সিং সক্ষম করতে, আপনাকে অবশ্যই StreamRequest.videoObject ব্যবহার করে স্ট্রিম অনুরোধে আপনার ভিডিও অবজেক্টটি পাঠাতে হবে।