পড পরিবেশন পুনঃনির্দেশের জন্য ক্লায়েন্ট প্রস্তুত করুন

এই নির্দেশিকায় পড সার্ভিং এপিআই এবং আপনার ম্যানিফেস্ট ম্যানিপুলেটর ব্যবহার করে একটি এইচএলএস বা ড্যাশ লাইভস্ট্রিম লোড করার জন্য একটি ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করার পদ্ধতি আলোচনা করা হয়েছে।

পূর্বশর্ত

এগিয়ে যাওয়ার আগে, আপনার নিম্নলিখিত জিনিসগুলো অবশ্যই থাকতে হবে:

একটি স্ট্রিম অনুরোধ করুন

যখন আপনার ব্যবহারকারী একটি স্ট্রিম নির্বাচন করবেন, তখন নিম্নলিখিত কাজগুলো করুন:

  1. লাইভস্ট্রিম সার্ভিস মেথডে একটি POST রিকোয়েস্ট পাঠান। বিস্তারিত জানতে, Method: stream দেখুন।

  2. বিজ্ঞাপন টার্গেটিং প্যারামিটারগুলো application/x-www-form-urlencoded অথবা application/json ফরম্যাটে দিন। এই অনুরোধটি Google DAI-এর সাথে একটি স্ট্রিম সেশন নিবন্ধন করে।

    নিম্নলিখিত উদাহরণটি একটি স্ট্রিম অনুরোধ তৈরি করে:

    ফর্ম এনকোডিং

    const url = `https://dai.google.com/ssai/pods/api/v1/` +
          `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`;
    
    const params = new URLSearchParams({
            cust_params: 'section=sports&page=golf,tennis'
    }).toString();
    
    const response = await fetch(url, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: params
    });
    
    console.log(await response.json());
    

    JSON এনকোড

    const url = `https://dai.google.com/ssai/pods/api/v1/` +
          `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`;
    
    const response = await fetch(url, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json'
            },
            body: JSON.stringify({
              cust_params: {
                section: 'sports',
                page: 'golf,tennis'
              }
            })
    });
    
    console.log(await response.json());
    

    সফল হলে, আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:

    {
    "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS",
    "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata",
    "session_update_url": "https://dai.google.com/linear/.../session",
    "polling_frequency": 10
    }
    
  3. JSON রেসপন্স থেকে স্ট্রিম সেশন আইডিটি খুঁজে বের করুন এবং পরবর্তী ধাপগুলোর জন্য অন্যান্য ডেটা সংরক্ষণ করুন।

পোল বিজ্ঞাপনের মেটাডেটা

বিজ্ঞাপনের মেটাডেটা পোল করতে, নিম্নলিখিতগুলি করুন:

  1. স্ট্রিম রেজিস্ট্রেশন রেসপন্স থেকে metadata_url ভ্যালুটি পড়ুন।

  2. এন্ডপয়েন্টটিতে একটি GET অনুরোধ পাঠান। বিস্তারিত জানতে, Method: metadata দেখুন।

    নিম্নলিখিত উদাহরণটি বিজ্ঞাপনের মেটাডেটা সংগ্রহ করে:

    const response = await fetch(metadata_url);
    console.log(await response.json());
    

    সফল হলে, আপনি বর্তমান এবং আসন্ন বিজ্ঞাপন বিরতিগুলির জন্য PodMetadata প্রতিক্রিয়া পাবেন:

    {
      "tags":{
        "google_5555555555":{
          "ad":"0000229834_ad1",
          "ad_break_id":"0000229834",
          "type":"firstquartile"
        },
        "google_1234567890123456789":{
          "ad":"0000229834_ad1",
          "ad_break_id":"0000229834",
          "type":"progress"
        },
        ...
      },
      "ads":{
        "0000229834_ad1":{
          "ad_break_id":"0000229834",
          "position":1,
          "duration":15,
          "clickthrough_url":"https://.../",
          ...
        },
              ...
      },
      "ad_breaks":{
        "0000229834":{
          "type":"mid",
          "duration":15,
          "ads":1
        },
        ...
      }
    }
    
  3. পরবর্তী ধাপগুলোর জন্য tags অবজেক্টটি সংরক্ষণ করুন।

  4. পরবর্তী সমস্ত বিজ্ঞাপন বিরতির জন্য নিয়মিতভাবে মেটাডেটা অনুরোধ করতে polling_frequency ভ্যালুটি ব্যবহার করে একটি টাইমার সেট করুন।

আপনার ভিডিও প্লেয়ারে স্ট্রিমটি লোড করুন

রেজিস্ট্রেশন রেসপন্স থেকে সেশন আইডি পাওয়ার পর, সেই আইডিটি আপনার ম্যানিফেস্ট ম্যানিপুলেটরে পাঠান, অথবা ভিডিও প্লেয়ারে স্ট্রিমটি লোড করার জন্য একটি ম্যানিফেস্ট ইউআরএল তৈরি করুন।

সেশন আইডি পাস করার জন্য, আপনার ম্যানিফেস্ট ম্যানিপুলেটরের ডকুমেন্টেশন দেখুন। আপনি যদি একটি ম্যানিফেস্ট ম্যানিপুলেটর তৈরি করেন, তবে ‘লাইভস্ট্রিমের জন্য ম্যানিফেস্ট ম্যানিপুলেটর’ দেখুন।

নিম্নলিখিত উদাহরণটি একটি ম্যানিফেস্ট ইউআরএল তৈরি করে:

https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"

আপনার প্লেয়ার প্রস্তুত হলে, প্লেব্যাক শুরু করুন।

বিজ্ঞাপনের ইভেন্টগুলির জন্য শুনুন

টাইমড মেটাডেটার জন্য আপনার স্ট্রিমের কন্টেইনার ফরম্যাট চেক করুন:

  • ট্রান্সপোর্ট স্ট্রিম (TS) কন্টেইনার সহ HLS স্ট্রিমগুলি সময়ভিত্তিক মেটাডেটা বহন করার জন্য সময়ভিত্তিক ID3 ট্যাগ ব্যবহার করে। বিস্তারিত জানতে, HTTP লাইভ স্ট্রিমিং (HLS) সহ কমন মিডিয়া অ্যাপ্লিকেশন ফরম্যাট সম্পর্কে দেখুন।

  • DASH স্ট্রিমগুলো ম্যানিফেস্টে ইভেন্ট নির্দিষ্ট করার জন্য EventStream এলিমেন্ট ব্যবহার করে।

  • যখন সেগমেন্টগুলিতে পেলোড ডেটার জন্য ইভেন্ট মেসেজ ( emsg ) বক্স থাকে, যার মধ্যে ID3 ট্যাগও অন্তর্ভুক্ত, তখন DASH স্ট্রিমগুলি InbandEventStream এলিমেন্ট ব্যবহার করে। বিস্তারিত জানতে, InbandEventStream দেখুন।

  • DASH এবং HLS সহ CMAF স্ট্রিমগুলি ID3 ট্যাগযুক্ত emsg বক্স ব্যবহার করে।

আপনার স্ট্রিম থেকে ID3 ট্যাগ পুনরুদ্ধার করতে, আপনার ভিডিও প্লেয়ারের নির্দেশিকা দেখুন। বিস্তারিত জানতে, 'হ্যান্ডেল টাইমড মেটাডেটা গাইড' দেখুন।

ID3 ট্যাগ থেকে বিজ্ঞাপন ইভেন্ট আইডি পুনরুদ্ধার করতে, নিম্নলিখিতগুলি করুন:

  1. urn:google:dai:2018 অথবা https://aomedia.org/emsg/ID3 ব্যবহার করে scheme_id_uri অনুযায়ী ইভেন্টগুলো ফিল্টার করুন।
  2. message_data ফিল্ড থেকে বাইট অ্যারেটি বের করুন।

    নিম্নলিখিত উদাহরণটি emsg ডেটাকে JSON-এ ডিকোড করে:

    {
      "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
      "presentation_time": 27554,
      "timescale": 1000,
      "message_data": "ID3TXXXgoogle_1234567890123456789",
      ...
    }
    
  3. TXXXgoogle_{ad_event_ID} ফরম্যাট ব্যবহার করে ID3 ট্যাগগুলো ফিল্টার করুন:

    TXXXgoogle_1234567890123456789
    

বিজ্ঞাপন ইভেন্টের ডেটা দেখান

TagSegment অবজেক্টটি খুঁজে পেতে, নিম্নলিখিতগুলি করুন:

  1. 'Poll ad metadata' থেকে বিজ্ঞাপনের মেটাডেটা tags অবজেক্টটি পুনরুদ্ধার করুন। tags অবজেক্টটি হলো TagSegment অবজেক্টের একটি অ্যারে।

  2. ' progress টাইপের একটি TagSegment অবজেক্ট খুঁজে পেতে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডিটি ব্যবহার করুন।

  3. অন্যান্য ধরনের TagSegment অবজেক্ট খুঁজে পেতে অ্যাড ইভেন্ট আইডির প্রথম ১৭টি অক্ষর ব্যবহার করুন।

  4. TagSegment পাওয়ার পর, বিজ্ঞাপনের মেটাডেটার ad_breaks অবজেক্টের মধ্যে AdBreak অবজেক্টটি খুঁজে বের করার জন্য ad_break_id প্রপার্টিটিকে কী (key) হিসেবে ব্যবহার করুন।

    নিম্নলিখিত উদাহরণটি একটি AdBreak অবজেক্ট খুঁজে বের করে:

    {
      "type":"mid",
      "duration":15,
      "ads":1
    }
    
  5. অ্যাড ব্রেকে বিজ্ঞাপনের অবস্থান সম্পর্কে তথ্য দেখানোর জন্য TagSegment এবং AdBreak ডেটা ব্যবহার করুন। উদাহরণস্বরূপ, Ad 1 of 3

মিডিয়া যাচাইকরণ পিং পাঠান

progress টাইপ ছাড়া প্রতিটি অ্যাড ইভেন্টের জন্য একটি মিডিয়া ভেরিফিকেশন পিং পাঠান। গুগল ডিএআই progress ইভেন্টগুলো বাতিল করে দেয়, এবং ঘন ঘন এই ইভেন্টগুলো পাঠালে তা আপনার অ্যাপের পারফরম্যান্সে প্রভাব ফেলতে পারে।

একটি বিজ্ঞাপন ইভেন্টের সম্পূর্ণ মিডিয়া যাচাইকরণ URL তৈরি করতে, নিম্নলিখিতগুলি করুন:

  1. স্ট্রিম রেসপন্স থেকে, সম্পূর্ণ অ্যাড ইভেন্ট আইডিটি media_verification_url ভ্যালুর সাথে যুক্ত করুন।

  2. সম্পূর্ণ URL সহ একটি GET অনুরোধ পাঠান:

    // media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/"
    const completeUrl = `${media_verification_url}google_5555555555123456789`;
    
    const response = await fetch(completeUrl);
    

    সফল হলে, আপনি একটি কোড স্ট্যাটাস 202 রেসপন্স পাবেন। অন্যথায়, আপনি একটি 404 এরর কোড পাবেন।

আপনি সমস্ত বিজ্ঞাপন ইভেন্টের ঐতিহাসিক লগ পরিদর্শন করতে স্ট্রিম অ্যাক্টিভিটি মনিটর (SAM) ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, একটি লাইভস্ট্রিম মনিটর এবং ট্রাবলশুট করুন দেখুন।