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 সংহত করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:
DAI Pod Serving API-এ একটি স্ট্রীম রেজিস্ট্রেশনের অনুরোধ করুন
স্ট্রীম রেজিস্ট্রেশন এন্ডপয়েন্টে একটি POST অনুরোধ করুন। আপনি পালাক্রমে আপনার ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার এবং সংশ্লিষ্ট পড সার্ভিং এপিআই এন্ডপয়েন্টে পাঠানোর জন্য স্ট্রিম আইডি সহ একটি JSON প্রতিক্রিয়া পাবেন।
API এন্ডপয়েন্ট
POST: /ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset}/stream
Host: dai.google.com
Content-Type: application/x-www-form-urlencoded
পাথ প্যারামিটার
{network_code} | আপনার Google Ad Manager 360 নেটওয়ার্ক কোড |
{custom_asset} | Google AdManager-এ কাস্টম শনাক্তকারী এই ইভেন্টটিকে যুক্ত করেছে৷ |
ফর্ম-এনকোডেড বডি প্যারামিটার
ফর্ম-এনকোডেড টার্গেটিং প্যারামিটারের একটি ঐচ্ছিক সেট।
প্রতিক্রিয়া 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 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "cust_params=\"section%3Dsports%26page%3Dgolf%2Ctennis\"" \
https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/ext-doc-ps-redirect-hls/stream
উদাহরণ প্রতিক্রিয়া
{
"stream_id":"9fe8fe4f-f12e-4fed-b509-0ca269bb1668:TUL",
"media_verification_url":"https://dai.google.com/.../media/",
"metadata_url":"https://dai.google.com/.../metadata",
"session_update_url":"https://dai.google.com/.../session",
"polling_frequency":10
}
ত্রুটির ক্ষেত্রে, স্ট্যান্ডার্ড 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
স্ট্রীম খেলুন
আপনি ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার থেকে একটি ভিডিও প্লেয়ারে প্রাপ্ত ম্যানিফেস্টটি লোড করুন এবং প্লেব্যাক শুরু করুন৷
নতুন AdBreak মেটাডেটার জন্য পোল
অ্যাপ্লিকেশনটি প্রতিটি বিজ্ঞাপন বিরতির জন্য মেটাডেটা পুনরুদ্ধার করার জন্য দায়ী, তাই এটি জানে কোন ইমপ্রেশনগুলি ট্রিগার করা দরকার৷ এটি সম্পন্ন করার জন্য আপনি নতুন বিজ্ঞাপন তথ্যের জন্য নিয়মিতভাবে DAI APIs metadata_url
পোল করার জন্য একটি টাইমার সেট করবেন৷ স্ট্রীম রেজিস্ট্রেশন প্রতিক্রিয়াতে polling_frequency
ফিল্ডে ভোটদানের ব্যবধান নির্দিষ্ট করা হয়েছে।
বিনিময়ে, আপনি নিম্নলিখিত পরামিতি সমন্বিত একটি JSON অবজেক্ট পাবেন:
tags | স্ট্রীমে প্রদর্শিত সমস্ত বিজ্ঞাপন ইভেন্ট সমন্বিত মূল-মান জোড়ার একটি সেট৷ কীগুলি হল একটি বিজ্ঞাপন ইভেন্ট আইডির প্রথম 17টি অক্ষর যা স্ট্রীমের সময়নির্ধারিত মেটাডেটাতে প্রদর্শিত হয়, অথবা progress ধরনের ইভেন্টের ক্ষেত্রে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডি।প্রতিটি মান নিম্নলিখিত পরামিতি ধারণকারী একটি বস্তু:
| ||||||||||||||||||
ads | মূল-মান জোড়ার একটি সেট যা স্ট্রীমে প্রদর্শিত সমস্ত বিজ্ঞাপনের বর্ণনা দেয়। কীগুলি হল বিজ্ঞাপন আইডি যা উপরে তালিকাভুক্ত tags অবজেক্টে পাওয়া মানগুলির সাথে মেলে৷ প্রতিটি মান নিম্নলিখিত পরামিতি ধারণকারী একটি বস্তু:
| ||||||||||||||||||
ad_breaks | স্ট্রীমে প্রদর্শিত সমস্ত বিজ্ঞাপন বিরতি বর্ণনা করে কী-মানের জোড়ার একটি সেট। কীগুলি হল বিজ্ঞাপন বিরতি আইডি যা উপরে তালিকাভুক্ত tags এবং 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_
পরে অক্ষরগুলির একটি সিরিজ দিয়ে। এই মান হল বিজ্ঞাপন ইভেন্ট আইডি ।
TXXX
এ XXX
একটি স্থানধারক নয়৷ স্ট্রিং 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
অবজেক্টের একটি কীর সাথে মিলিত হতে পারে। এই মানগুলিকে মেলানো একটি দ্বি-পদক্ষেপ প্রক্রিয়া:
সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডির সাথে মেলে একটি কী জন্য
tags
অবজেক্ট পরীক্ষা করুন। যদি একটি মিল পাওয়া যায়, ইভেন্টের ধরন এবং এর সাথে সম্পর্কিতad
এবংad_break
অবজেক্টগুলি পুনরুদ্ধার করুন৷ এই ঘটনা টাইপprogress
থাকা উচিত.যদি সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডির জন্য একটি মিল খুঁজে না পাওয়া যায়, তাহলে বিজ্ঞাপন ইভেন্ট আইডির প্রথম 17টি অক্ষরের সাথে মিলে যাওয়া কীটির জন্য
tags
অবজেক্টটি পরীক্ষা করুন। ইভেন্টের ধরন এবং সংশ্লিষ্টad
এবংad_break
অবজেক্ট পুনরুদ্ধার করুন। এটিprogress
ব্যতীত অন্যান্য প্রকারের সাথে সমস্ত ইভেন্ট পুনরুদ্ধার করা উচিত।আপনার প্লেয়ারের 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