VOD স্ট্রীমের জন্য ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ

Google DAI Pod Serving API আপনাকে আপনার নিজের ভিডিও স্টিচিংয়ের নিয়ন্ত্রণ বজায় রেখে Google Ads দ্বারা চালিত সার্ভার-সাইড বিজ্ঞাপন সন্নিবেশ করতে দেয়।

এই নির্দেশিকা আপনাকে দেখায় কিভাবে Pod Serving API এর সাথে ইন্টারঅ্যাক্ট করতে হয় এবং IMA DAI SDK-এর সাথে অনুরূপ কার্যকারিতা অর্জন করতে হয়। সমর্থিত কার্যকারিতা সম্পর্কে নির্দিষ্ট প্রশ্নের জন্য, আপনার Google অ্যাকাউন্ট পরিচালকের সাথে যোগাযোগ করুন।

Pod Serving API HLS বা MPEG-DASH স্ট্রিমিং প্রোটোকলের মধ্যে পড সার্ভিং স্ট্রীম সমর্থন করে। এই নির্দেশিকাটি HLS স্ট্রীমগুলিতে ফোকাস করে এবং নির্দিষ্ট ধাপে HLS এবং MPEG-DASH-এর মধ্যে মূল পার্থক্যগুলি হাইলাইট করে৷

VOD স্ট্রীমগুলির জন্য আপনার অ্যাপে Pod Serving API সংহত করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

অ্যাড ম্যানেজারের কাছে একটি স্ট্রিম নিবন্ধনের অনুরোধ করুন

স্ট্রীম রেজিস্ট্রেশন এন্ডপয়েন্টে একটি POST অনুরোধ করুন। আপনি পালাক্রমে আপনার ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার এবং সংশ্লিষ্ট পড সার্ভিং এপিআই এন্ডপয়েন্টে পাঠানোর জন্য স্ট্রিম আইডি সহ একটি JSON প্রতিক্রিয়া পাবেন।

API এন্ডপয়েন্ট

POST: /ondemand/pods/api/v1/network/{network_code}/stream_registration
Host: dai.google.com
Content-Type: application/json

পাথ প্যারামিটার

{network_code} আপনার Google Ad Manager 360 নেটওয়ার্ক কোড

JSON বডি প্যারামিটার

targeting_parameters একটি JSON অবজেক্ট যাতে কন্টেন্ট সোর্স আইডি (cmsid), ভিডিও আইডি (vid) এবং বিজ্ঞাপন টার্গেটিং প্যারামিটার থাকেপ্রয়োজন

প্রতিক্রিয়া JSON

media_verification_url প্লেব্যাক ট্র্যাকিং ইভেন্টগুলিকে পিং করার ভিত্তি URL৷ এই বেস ইউআরএলে একটি বিজ্ঞাপন ইভেন্ট আইডি যুক্ত করে একটি সম্পূর্ণ মিডিয়া যাচাইকরণ URL তৈরি করা হয়।
metadata_url বিজ্ঞাপন পড মেটাডেটা অনুরোধ করার URL।
stream_id বর্তমান স্ট্রিম সেশন সনাক্ত করতে ব্যবহৃত স্ট্রিং।
valid_for বর্তমান স্ট্রিম সেশনের মেয়াদ শেষ না হওয়া পর্যন্ত dhms (দিন, ঘন্টা, মিনিট, সেকেন্ড) ফর্ম্যাটে বাকি সময়। উদাহরণস্বরূপ, 2h0m0.000s 2 ঘন্টা সময়কালের প্রতিনিধিত্ব করে।
valid_until yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm বিন্যাসে একটি ISO 8601 datetime স্ট্রিং হিসাবে বর্তমান স্ট্রিম সেশনের মেয়াদ শেষ হওয়ার সময়৷

উদাহরণ অনুরোধ (cURL)

curl -X POST \
     -d '{"targeting_parameters":{"cmsid":"12345","vid":"sample-video"}}' \
     -H 'Content-Type: application/json' \
  https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration

উদাহরণ প্রতিক্রিয়া

{
  "media_verification_url": "https://dai.google.com/.../media/",
  "metadata_url": "https://dai.google.com/.../metadata",
  "stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
  "valid_for": "8h0m0s",
  "valid_until": "2023-03-24T08:30:26.839717986-07:00"
}

ত্রুটির ক্ষেত্রে, স্ট্যান্ডার্ড HTTP ত্রুটি কোডগুলি JSON প্রতিক্রিয়া বডি ছাড়াই ফেরত দেওয়া হয়।

JSON প্রতিক্রিয়া পার্স করুন এবং প্রাসঙ্গিক মান সংরক্ষণ করুন।

ম্যানিফেস্ট ম্যানিপুলেটর থেকে স্ট্রীম ম্যানিফেস্টের অনুরোধ করুন

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

সাধারণভাবে, সেশন-নির্দিষ্ট ম্যানিফেস্ট তৈরি করার জন্য আপনাকে আপনার ম্যানিফেস্ট ম্যানিপুলেটরকে উপরে রেজিস্ট্রেশন এন্ডপয়েন্ট দ্বারা ফেরত দেওয়া স্ট্রিম আইডিটি পাস করতে হবে। আপনার ম্যানিফেস্ট ম্যানিপুলেটর দ্বারা স্পষ্টভাবে বলা না থাকলে, আপনার ম্যানিফেস্ট অনুরোধের প্রতিক্রিয়া হল একটি ভিডিও স্ট্রীম যাতে সামগ্রী এবং বিজ্ঞাপন উভয়ই রয়েছে৷

উদাহরণ অনুরোধ (cURL)

curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8

উদাহরণ প্রতিক্রিয়া (HLS)

#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_     subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8

স্ট্রীম খেলুন

আপনি ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার থেকে একটি ভিডিও প্লেয়ারে প্রাপ্ত ম্যানিফেস্টটি লোড করুন এবং প্লেব্যাক শুরু করুন৷

অ্যাড ম্যানেজার থেকে বিজ্ঞাপন পড মেটাডেটার অনুরোধ করুন

আপনি প্রথম ধাপে যে metadata_url পেয়েছেন সেটিতে একটি GET অনুরোধ করুন। আপনি আপনার ম্যানিফেস্ট ম্যানিপুলেটর থেকে সেলাই করা ম্যানিফেস্ট পাওয়ার পরে এই পদক্ষেপটি অবশ্যই ঘটতে হবে। আপনি ফলস্বরূপ নিম্নলিখিত পরামিতি সমন্বিত একটি JSON অবজেক্ট পাবেন:

tags স্ট্রীমে প্রদর্শিত সমস্ত বিজ্ঞাপন ইভেন্ট সমন্বিত মূল-মান জোড়ার একটি সেট৷ কীগুলি হল একটি বিজ্ঞাপন ইভেন্ট আইডির প্রথম 17টি অক্ষর যা স্ট্রীমের সময়নির্ধারিত মেটাডেটাতে প্রদর্শিত হয়, অথবা progress ধরনের ইভেন্টের ক্ষেত্রে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডি।

প্রতিটি মান নিম্নলিখিত পরামিতি ধারণকারী একটি বস্তু:

ad বিজ্ঞাপনের আইডি যা ads বস্তুর একটি কী-এর সাথে মেলে।
ad_break_id বিজ্ঞাপন বিরতির আইডি যা ad_breaks অবজেক্টের একটি কী-এর সাথে মেলে।
type বিজ্ঞাপন ইভেন্টের ধরন। বিজ্ঞাপন ইভেন্টের প্রকারগুলি হল:
start বিজ্ঞাপনের শুরুতে ফায়ার করা।
firstquartile প্রথম কোয়ার্টাইল শেষে গুলি করা হয়।
midpoint বিজ্ঞাপনের মাঝামাঝি সময়ে গুলি করা হয়।
thirdquartile থার্ড কোয়ার্টাইল শেষে ফায়ার করা হয়।
complete বিজ্ঞাপনের শেষে ফায়ার করা হয়।
progress একটি বিজ্ঞাপন বিরতি চলছে বলে অ্যাপটিকে অবহিত করার জন্য বিজ্ঞাপন জুড়ে পর্যায়ক্রমে ফায়ার করা হয়েছে।
ads মূল-মান জোড়ার একটি সেট যা স্ট্রীমে প্রদর্শিত সমস্ত বিজ্ঞাপনের বর্ণনা দেয়। কীগুলি হল বিজ্ঞাপন আইডি যা উপরে তালিকাভুক্ত tags অবজেক্টে পাওয়া মানগুলির সাথে মেলে৷ প্রতিটি মান নিম্নলিখিত পরামিতি ধারণকারী একটি বস্তু:
ad_break_id বিজ্ঞাপন বিরতির আইডি যা ad_breaks অবজেক্টের একটি কী-এর সাথে মেলে।
position ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপন বিরতিতে বিজ্ঞাপনের সেটের মধ্যে যে অবস্থানে এই বিজ্ঞাপনটি প্রদর্শিত হয়।
duration ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপনের দৈর্ঘ্য।
clickthrough_url ইউআরএল যেটি খোলা উচিত যখন একজন ব্যবহারকারী এই বিজ্ঞাপনটির সাথে ইন্টারঅ্যাক্ট করে, যদি সমর্থিত হয়।
ad_breaks স্ট্রীমে প্রদর্শিত সমস্ত বিজ্ঞাপন বিরতি বর্ণনা করে কী-মানের জোড়ার একটি সেট। কীগুলি হল বিজ্ঞাপন বিরতি আইডি যা উপরে তালিকাভুক্ত tags এবং ads বস্তুগুলিতে পাওয়া মানগুলির সাথে মেলে৷ প্রতিটি মান নিম্নলিখিত পরামিতি ধারণকারী একটি বস্তু:
type বিজ্ঞাপন বিরতির ধরন। বিজ্ঞাপন বিরতির প্রকারগুলি হল pre (প্রি-রোল), mid (মিড-রোল) এবং post (পোস্ট-রোল)।
duration ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপন বিরতির দৈর্ঘ্য।
ads এই বিজ্ঞাপন বিরতিতে বিজ্ঞাপনের সংখ্যা।

আপনার ভিডিও স্ট্রীমের মধ্যে টাইমড মেটাডেটা ইভেন্টগুলির সাথে যুক্ত করতে এই মানগুলি সঞ্চয় করুন৷

উদাহরণ অনুরোধ (cURL)

curl https://dai.google.com/.../metadata

উদাহরণ প্রতিক্রিয়া

{
  "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
    },
    ...
  }
}

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

আপনার ভিডিও প্লেয়ারের অডিও/ভিডিও স্ট্রীমে ট্রিগার করা বিজ্ঞাপন ইভেন্টের মাধ্যমে টাইমড মেটাডেটা শুনুন।

MPEG-TS স্ট্রীমগুলির জন্য, মেটাডেটা ইন-ব্যান্ড ID3 v2.3 ট্যাগ হিসাবে উপস্থিত হয়। প্রতিটি মেটাডেটা ট্যাগের আইডি TXXX থাকে, এবং মানটি শুরু হয় স্ট্রিং google_ এর পরে অক্ষরগুলির একটি সিরিজ দিয়ে। এই মান হল বিজ্ঞাপন ইভেন্ট আইডি

TXXXXXX একটি স্থানধারক নয়৷ স্ট্রিং TXXX হল ID3 ট্যাগ আইডি যা "ব্যবহারকারীর সংজ্ঞায়িত পাঠ্য" এর জন্য সংরক্ষিত।

উদাহরণ ID3 ট্যাগ

TXXXgoogle_1234567890123456789

MP4 স্ট্রীমের জন্য, এগুলি ইন-ব্যান্ড ইএমএস ইভেন্ট হিসাবে পাঠানো হয় যা ID3 v2.3 ট্যাগগুলিকে অনুকরণ করে৷ প্রতিটি প্রাসঙ্গিক ইএমএস বক্সের একটি scheme_id_uri মান রয়েছে https://aomedia.org/emsg/ID3 বা https://developer.apple.com/streaming/emsg-id3 এবং ID3TXXXgoogle_ দিয়ে শুরু হওয়া একটি message_data মান। ID3TXXX উপসর্গ ছাড়া এই message_data মান হল বিজ্ঞাপন ইভেন্ট আইডি

উদাহরণ ইএমএস বক্স

আপনার মিডিয়া প্লেয়ার লাইব্রেরির উপর নির্ভর করে ডেটা কাঠামো পরিবর্তিত হতে পারে।

যদি বিজ্ঞাপন ইভেন্ট আইডি হয় google_1234567890123456789 প্রতিক্রিয়াটি এরকম দেখায়:

{
  "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
  "presentation_time": 27554,
  "timescale": 1000,
  "message_data": "ID3TXXXgoogle_1234567890123456789",
  ...
}

কিছু মিডিয়া প্লেয়ার লাইব্রেরি স্বয়ংক্রিয়ভাবে emsg ইভেন্টগুলি উপস্থাপন করে যা ID3 ট্যাগগুলিকে নেটিভ ID3 ট্যাগ হিসাবে অনুকরণ করে। এই ক্ষেত্রে, MP4 স্ট্রীমগুলি অভিন্ন ID3 ট্যাগগুলিকে MPEG_TS হিসাবে উপস্থাপন করে৷

ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপের UI আপডেট করুন

প্রতিটি বিজ্ঞাপন ইভেন্ট আইডি ধাপ 4 থেকে tags অবজেক্টের একটি কীর সাথে মিলিত হতে পারে। এই মানগুলিকে মেলানো একটি দ্বি-পদক্ষেপ প্রক্রিয়া:

  1. সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডির সাথে মেলে একটি কী জন্য tags অবজেক্ট পরীক্ষা করুন। যদি একটি মিল পাওয়া যায়, ইভেন্টের ধরন এবং এর সাথে সম্পর্কিত ad এবং ad_break অবজেক্টগুলি পুনরুদ্ধার করুন৷ এই ঘটনা টাইপ progress থাকা উচিত.

    যদি সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডির জন্য একটি মিল খুঁজে না পাওয়া যায়, তাহলে বিজ্ঞাপন ইভেন্ট আইডির প্রথম 17টি অক্ষরের সাথে মিলে যাওয়া কীটির জন্য tags অবজেক্টটি পরীক্ষা করুন। ইভেন্টের ধরন এবং সংশ্লিষ্ট ad এবং ad_break অবজেক্ট পুনরুদ্ধার করুন। এটি progress ব্যতীত অন্যান্য প্রকারের সাথে সমস্ত ইভেন্ট পুনরুদ্ধার করা উচিত।

  2. আপনার প্লেয়ারের UI আপডেট করতে এই পুনরুদ্ধার করা তথ্য ব্যবহার করুন। উদাহরণস্বরূপ, আপনি যখন একটি start বা প্রথম progress ইভেন্ট পান, তখন আপনার প্লেয়ারের অনুসন্ধান নিয়ন্ত্রণগুলি লুকিয়ে রাখুন এবং বিজ্ঞাপন বিরতিতে বর্তমান বিজ্ঞাপনের অবস্থান বর্ণনা করে একটি ওভারলে প্রদর্শন করুন, উদাহরণস্বরূপ: "3 এর মধ্যে 1 বিজ্ঞাপন"৷

বিজ্ঞাপন ইভেন্ট আইডির উদাহরণ

google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID

উদাহরণ ট্যাগ বস্তু

{
  "google_5555555555":{
    "ad":"0000229834_ad1",
    "ad_break_id":"0000229834",
    "type":"firstquartile"
  },
  "google_1234567890123456789":{
    "ad":"0000229834_ad1",
    "ad_break_id":"0000229834",
    "type":"progress"
  },
  ...
}

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

progress ব্যতীত অন্য ধরনের একটি বিজ্ঞাপন ইভেন্ট প্রাপ্ত হলে প্রতিবারই একটি মিডিয়া যাচাইকরণ পিং অ্যাড ম্যানেজারে পাঠাতে হবে।

একটি বিজ্ঞাপন ইভেন্টের সম্পূর্ণ মিডিয়া যাচাইকরণ URL তৈরি করতে, স্ট্রীম রেজিস্ট্রেশন প্রতিক্রিয়া থেকে media_verification_url মানতে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডি যোগ করুন।

সম্পূর্ণ URL সহ একটি GET অনুরোধ করুন৷ যাচাইকরণের অনুরোধ সফল হলে, আপনি স্ট্যাটাস কোড 202 সহ একটি HTTP প্রতিক্রিয়া পাবেন। অন্যথায়, আপনি HTTP ত্রুটি কোড 404 পাবেন।

উদাহরণ অনুরোধ (cURL)

curl https://{...}/media/google_5555555555123456789

উদাহরণ সফল প্রতিক্রিয়া

HTTP/1.1 202 Accepted

অতিরিক্ত সম্পদ