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

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

পূর্বশর্ত

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

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

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

  1. লাইভস্ট্রিম পরিষেবা পদ্ধতিতে একটি POST অনুরোধ করুন। বিস্তারিত জানার জন্য, পদ্ধতি দেখুন: স্ট্রিম

  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 অনুরোধ করুন। বিস্তারিত জানার জন্য, পদ্ধতি দেখুন: মেটাডেটা

    নিম্নলিখিত উদাহরণটি বিজ্ঞাপন মেটাডেটা নিয়ে আসে:

    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 মান ব্যবহার করে একটি টাইমার সেট করুন।

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

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

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

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

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 উপাদানগুলি ব্যবহার করে৷

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

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

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

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

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

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

    {
      "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. পোল বিজ্ঞাপন মেটাডেটা থেকে বিজ্ঞাপন মেটাডেটা tags অবজেক্ট পুনরুদ্ধার করুন। tags অবজেক্ট হল TagSegment অবজেক্টের একটি অ্যারে।

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

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

  4. আপনার কাছে TagSegment থাকার পর, ad_break_id প্রপার্টিটিকে কী হিসেবে অ্যাড মেটাডেটা ad_breaks অবজেক্টে AdBreak অবজেক্ট খুঁজে বের করুন।

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

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

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

প্রতিটি বিজ্ঞাপন ইভেন্টের জন্য, progress ধরন ছাড়া, একটি মিডিয়া যাচাইকরণ পিং পাঠান। Google DAI 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) ব্যবহার করতে পারেন। বিশদ বিবরণের জন্য, একটি লাইভস্ট্রিম মনিটর এবং সমস্যা সমাধান দেখুন