DAI-এর জন্য IMA SDK সেট-আপ করা

প্ল্যাটফর্ম বেছে নিন: HTML5 Android iOS tvOS Cast Roku

আপনি যে DAI সমাধান ব্যবহার করতে চান সেটি বেছে নিন

সম্পূর্ণ পরিষেবা DAI

এই গাইড দেখায় যে কীভাবে IMA CAF DAI SDK ব্যবহার করে DAI স্ট্রিম চালাতে হয়। আপনি যদি সম্পূর্ণ নমুনা ইন্টিগ্রেশন দেখতে বা অনুসরণ করতে চান, নমুনা ডাউনলোড করুন।

এই নির্দেশিকা ব্যবহার করার আগে, Chromecast অ্যাপ্লিকেশন ফ্রেমওয়ার্কের ওয়েব রিসিভার প্রোটোকল সম্পর্কে ভালোভাবে জেনে নিন। এই গাইড ধরে নেয় যে আপনি CAF রিসিভারের প্রাথমিক ধারণা সম্পর্কে জানেন, যেমন মেসেজ ইন্টারসেপ্টর এবং mediaInformation অবজেক্ট, এর পাশাপাশি CAF প্রেরক এমুলেট করার জন্য Cast Command and Control টুল ব্যবহার করার বিষয়েও জানেন।

IMA DAI ব্যবহার করতে হলে, আপনার একটি Ad Manager 360 অ্যাকাউন্ট থাকতে হবে। আপনার Ad Manager অ্যাকাউন্ট থাকলে, আরও বিবরণের জন্য আপনার অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করুন। Ad Manager-এ সাইন-আপ করার ব্যাপারে আরও তথ্য পেতে, Ad Manager সহায়তা কেন্দ্র দেখুন।

অন্যান্য প্ল্যাটফর্মের সাথে ইন্টিগ্রেট করা বা IMA ক্লায়েন্ট-সাইড SDK ব্যবহার করা সম্পর্কে তথ্য পেতে, Interactive Media Ads SDK দেখুন।

CAF DAI ওভারভিউ

IMA CAF DAI SDK ব্যবহার করে DAI প্রয়োগ করার মধ্যে দুটি প্রধান কম্পোনেন্ট আছে, যা এই নির্দেশিকায় দেখানো হয়েছে:

  • StreamRequest: Google-এর বিজ্ঞাপন সার্ভারে স্ট্রিম অনুরোধকে সংজ্ঞায়িত করে এমন একটি অবজেক্ট। স্ট্রিম অনুরোধ মূলত দুই ধরনের হয়:

    • LiveStreamRequest: অ্যাসেট কী এবং অন্যান্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করে।
    • VODStreamRequest: কন্টেন্ট সোর্স আইডি, ভিডিও আইডি এবং অন্যান্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করে।
    • দুটি অনুরোধের ধরনের মধ্যে ঐচ্ছিকভাবে API কী অন্তর্ভুক্ত থাকতে পারে, যা নির্দিষ্ট স্ট্রিম অ্যাক্সেস করার জন্য প্রয়োজন এবং Google Ad Manager-এর নেটওয়ার্ক কোড IMA SDK-এর জন্য প্রয়োজন, যাতে Google Ad Manager সেটিংসে উল্লেখ করা বিজ্ঞাপন শনাক্তকারী ম্যানেজ করা যায়।
  • StreamManager: ভিডিও স্ট্রিম ও IMA DAI SDK-এর মধ্যে যোগাযোগ ম্যানেজ করে এমন একটি অবজেক্ট, যেমন ট্র্যাকিং পিং ফায়ার করা এবং প্রকাশকের কাছে স্ট্রিম ইভেন্ট ফরওয়ার্ড করা।

পূর্বশর্ত

  • রেজিস্টার করা টেস্ট ডিভাইস সহ একটি Cast Developer Console অ্যাকাউন্ট।
  • একটি হোস্ট করা ওয়েব রিসিভার অ্যাপ যা আপনার Cast Developer Console-এ রেজিস্টার করা আছে এবং যা হোস্ট করার জন্য পরিবর্তন করা যেতে পারে এই নির্দেশিকা দ্বারা প্রদত্ত কোড।
  • আপনার ওয়েব রিসিভার অ্যাপ ব্যবহার করার জন্য কনফিগার করা একটি সেন্ডিং অ্যাপ। এই উদাহরণে কাস্ট কমান্ড ও কন্ট্রোল টুলকে সেন্ডার হিসেবে ব্যবহার করা হয়েছে।

প্রেরকের MediaInfo অবজেক্ট কনফিগার করুন

প্রথমে, আপনার প্রেরক অ্যাপের MediaInfo অবজেক্ট কনফিগার করে নিম্নলিখিত ফিল্ড যোগ করুন:

contentId এই মিডিয়া আইটেমের জন্য অনন্য শনাক্তকারী
contentUrl যেকোনও কারণে DAI StreamRequest কাজ না করলে লোড করার জন্য ফলব্যাক স্ট্রিম URL
streamType লাইভ স্ট্রিমের জন্য এই ভ্যালু `LIVE` হিসেবে সেট করতে হবে। VOD স্ট্রিমের জন্য, এই ভ্যালু `BUFFERED` হিসেবে সেট করতে হবে
customData assetKey শুধুমাত্র লাইভ স্ট্রিম। লোড করার জন্য লাইভ স্ট্রিম শনাক্ত করে
contentSourceId শুধুমাত্র VOD স্ট্রিম। অনুরোধ করা স্ট্রিম আছে এমন মিডিয়া ফিড শনাক্ত করে।
videoId শুধু VOD স্ট্রিম। নির্দিষ্ট মিডিয়া ফিডের মধ্যে অনুরোধ করা স্ট্রিম শনাক্ত করে।
networkCode (ঐচ্ছিক) আপনার Google Ad Manager নেটওয়ার্ক কোড।
ApiKey একটি ঐচ্ছিক API কী যা IMA DAI SDK থেকে স্ট্রিম URL পুনরুদ্ধার করার জন্য প্রয়োজন হতে পারে
senderCanSkip প্রেরণকারী ডিভাইসে স্কিপ করার বোতাম দেখানোর সুবিধা আছে কিনা তা প্রাপককে জানানোর জন্য বুলিয়ান ভ্যালু, এর ফলে স্কিপ করা যায় এমন বিজ্ঞাপন কাজ করে

কাস্ট কমান্ড ও কন্ট্রোল টুলে এইসব ভ্যালু কনফিগার করতে, মিডিয়া লোড করুন ট্যাবে ক্লিক করুন এবং কাস্টম লোড অনুরোধের ধরন LOAD হিসেবে সেট করুন। তারপর, টেক্সট এরিয়ায় থাকা JSON ডেটা নিম্নলিখিত JSON অবজেক্টগুলির মধ্যে একটি দিয়ে পাল্টে দিন:

লাইভ

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "c-rArva4ShKVIAkNfy6HUQ",
      "networkCode": "21775744923",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

VOD

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "networkCode": "21775744923",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

এই কাস্টম লোড অনুরোধ অবজেক্টটি নিম্নলিখিত ধাপগুলি পরীক্ষা করার জন্য রিসিভারের কাছে পাঠানো যেতে পারে।

একটি বেসিক CAF রিসিভার তৈরি করুন

CAF SDK-এর প্রাথমিক রিসিভার গাইড অনুসরণ করে, একটি প্রাথমিক ওয়েব রিসিভার তৈরি করুন।

আপনার প্রাপকের কোডটি এই ধরনের হওয়া উচিত:

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    cast.framework.CastReceiverContext.getInstance().start();
  </script>
</body>
</html>

IMA DAI SDK ইমপোর্ট করুন এবং প্লেয়ার ম্যানেজার পান

CAF লোড করার স্ক্রিপ্টের ঠিক পরে, আপনার ওয়েব রিসিভারে CAF-এর জন্য IMA DAI SDK ইমপোর্ট করতে স্ক্রিপ্ট ট্যাগ যোগ করুন। CAF DAI SDK হল এভারগ্রিন, তাই কোনও নির্দিষ্ট ভার্সন সেট করার প্রয়োজন নেই। তারপরে, এর পরের স্ক্রিপ্ট ট্যাগে, রিসিভার শুরু করার আগে রিসিভার কনটেক্সট এবং প্লেয়ার ম্যানেজারকে কনস্ট্যান্ট হিসেবে স্টোর করুন।

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();

    castContext.start();
  </script>
</body>
</html>

IMA Stream Manager শুরু করা

CAF DAI SDK-এর Stream Manager শুরু করুন।

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    castContext.start();
  </script>
</body>
</html>

লোড মেসেজ ইন্টারসেপ্টর তৈরি করুন

CAF DAI SDK, স্ট্রিম অনুরোধ করতে এবং কন্টেন্ট URL-কে চূড়ান্ত DAI স্ট্রিম দিয়ে পরিবর্তন করতে, CAF লোড মেসেজ ইন্টারসেপ্টর ব্যবহার করে। মেসেজ ইন্টারসেপ্টর streamManager.requestStream() কল করে যা বিজ্ঞাপন বিরতি সেট করা, স্ট্রিমের অনুরোধ করা এবং আগে থেকে থাকা contentURL পরিবর্তন করা হ্যান্ডেল করে।

শুধুমাত্র একটি লোড মেসেজ ইন্টারসেপ্টর থাকতে পারে, তাই আপনার অ্যাপে ইন্টারসেপ্টর ব্যবহার করার প্রয়োজন হলে, আপনাকে একই কলব্যাকে যেকোনও কাস্টম ফাংশন যোগ করতে হবে।

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => null;

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                this.broadcast('Stream request successful.');
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

স্ট্রিম অনুরোধ তৈরি করা

আপনার CAF DAI ইন্টিগ্রেশন সম্পূর্ণ করতে, প্রেরকের থেকে পাওয়া mediaInfo অবজেক্টে অন্তর্ভুক্ত ডেটা ব্যবহার করে আপনাকে স্ট্রিম অনুরোধ তৈরি করতে হবে।

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imaRequestData.networkCode) {
        streamRequest.networkCode = imaRequestData.networkCode;
      }
      if (streamRequest && imaRequestData.ApiKey) {
        streamRequest.ApiKey = imaRequestData.ApiKey;
      }
      if (streamRequest && imaRequestData.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

আপনি এখন Google-এর CAF DAI SDK-এর মাধ্যমে DAI স্ট্রিমের অনুরোধ করতে ও তা চালাতে পারবেন। আরও উন্নত SDK ফিচার সম্পর্কে জানতে, অন্যান্য নির্দেশিকা দেখুন অথবা আমাদের স্যাম্পেল রিসিভার অ্যাপ্লিকেশন ডাউনলোড করুন।