এই নির্দেশিকায় পড সার্ভিং এপিআই এবং আপনার ম্যানিফেস্ট ম্যানিপুলেটর ব্যবহার করে একটি এইচএলএস বা ড্যাশ লাইভস্ট্রিম লোড করার জন্য একটি ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করার পদ্ধতি আলোচনা করা হয়েছে।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে, আপনার নিম্নলিখিত জিনিসগুলো অবশ্যই থাকতে হবে:
Pod serving redirectDAI টাইপ দিয়ে কনফিগার করা একটি লাইভস্ট্রিম ইভেন্টের জন্য একটি কাস্টম অ্যাসেট কী। এই কী-টি পেতে, অনুসরণ করুন:একটি SOAP API ক্লায়েন্ট লাইব্রেরি ব্যবহার করে, একটি
LiveStreamEventঅবজেক্ট এবংdynamicAdInsertionTypeপ্রপার্টিকেPOD_SERVING_REDIRECTenum ভ্যালুতে সেট করেLiveStreamEventService.createLiveStreamEventsমেথডটি কল করুন। সমস্ত ক্লায়েন্ট লাইব্রেরির জন্য, ক্লায়েন্ট লাইব্রেরি এবং উদাহরণ কোড দেখুন।
আপনার প্ল্যাটফর্মের জন্য ইন্টারেক্টিভ মিডিয়া অ্যাডস (IMA) SDK উপলব্ধ আছে কিনা তা নির্ধারণ করুন। রাজস্ব বৃদ্ধির জন্য আমরা IMA SDK ব্যবহারের সুপারিশ করি। বিস্তারিত জানতে, DAI-এর জন্য IMA SDK সেট আপ করুন দেখুন।
একটি স্ট্রিম অনুরোধ করুন
যখন আপনার ব্যবহারকারী একটি স্ট্রিম নির্বাচন করবেন, তখন নিম্নলিখিত কাজগুলো করুন:
লাইভস্ট্রিম সার্ভিস মেথডে একটি
POSTরিকোয়েস্ট পাঠান। বিস্তারিত জানতে, Method: stream দেখুন।বিজ্ঞাপন টার্গেটিং প্যারামিটারগুলো
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 }JSON রেসপন্স থেকে স্ট্রিম সেশন আইডিটি খুঁজে বের করুন এবং পরবর্তী ধাপগুলোর জন্য অন্যান্য ডেটা সংরক্ষণ করুন।
পোল বিজ্ঞাপনের মেটাডেটা
বিজ্ঞাপনের মেটাডেটা পোল করতে, নিম্নলিখিতগুলি করুন:
স্ট্রিম রেজিস্ট্রেশন রেসপন্স থেকে
metadata_urlভ্যালুটি পড়ুন।এন্ডপয়েন্টটিতে একটি
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 }, ... } }পরবর্তী ধাপগুলোর জন্য
tagsঅবজেক্টটি সংরক্ষণ করুন।পরবর্তী সমস্ত বিজ্ঞাপন বিরতির জন্য নিয়মিতভাবে মেটাডেটা অনুরোধ করতে
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 ট্যাগ থেকে বিজ্ঞাপন ইভেন্ট আইডি পুনরুদ্ধার করতে, নিম্নলিখিতগুলি করুন:
-
urn:google:dai:2018অথবাhttps://aomedia.org/emsg/ID3ব্যবহার করেscheme_id_uriঅনুযায়ী ইভেন্টগুলো ফিল্টার করুন। message_dataফিল্ড থেকে বাইট অ্যারেটি বের করুন।নিম্নলিখিত উদাহরণটি
emsgডেটাকে JSON-এ ডিকোড করে:{ "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }TXXXgoogle_{ad_event_ID}ফরম্যাট ব্যবহার করে ID3 ট্যাগগুলো ফিল্টার করুন:TXXXgoogle_1234567890123456789
বিজ্ঞাপন ইভেন্টের ডেটা দেখান
TagSegment অবজেক্টটি খুঁজে পেতে, নিম্নলিখিতগুলি করুন:
'Poll ad metadata' থেকে বিজ্ঞাপনের মেটাডেটা
tagsঅবজেক্টটি পুনরুদ্ধার করুন।tagsঅবজেক্টটি হলোTagSegmentঅবজেক্টের একটি অ্যারে।'
progressটাইপের একটিTagSegmentঅবজেক্ট খুঁজে পেতে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডিটি ব্যবহার করুন।অন্যান্য ধরনের
TagSegmentঅবজেক্ট খুঁজে পেতে অ্যাড ইভেন্ট আইডির প্রথম ১৭টি অক্ষর ব্যবহার করুন।TagSegmentপাওয়ার পর, বিজ্ঞাপনের মেটাডেটারad_breaksঅবজেক্টের মধ্যেAdBreakঅবজেক্টটি খুঁজে বের করার জন্যad_break_idপ্রপার্টিটিকে কী (key) হিসেবে ব্যবহার করুন।নিম্নলিখিত উদাহরণটি একটি
AdBreakঅবজেক্ট খুঁজে বের করে:{ "type":"mid", "duration":15, "ads":1 }অ্যাড ব্রেকে বিজ্ঞাপনের অবস্থান সম্পর্কে তথ্য দেখানোর জন্য
TagSegmentএবংAdBreakডেটা ব্যবহার করুন। উদাহরণস্বরূপ,Ad 1 of 3।
মিডিয়া যাচাইকরণ পিং পাঠান
progress টাইপ ছাড়া প্রতিটি অ্যাড ইভেন্টের জন্য একটি মিডিয়া ভেরিফিকেশন পিং পাঠান। গুগল ডিএআই progress ইভেন্টগুলো বাতিল করে দেয়, এবং ঘন ঘন এই ইভেন্টগুলো পাঠালে তা আপনার অ্যাপের পারফরম্যান্সে প্রভাব ফেলতে পারে।
একটি বিজ্ঞাপন ইভেন্টের সম্পূর্ণ মিডিয়া যাচাইকরণ URL তৈরি করতে, নিম্নলিখিতগুলি করুন:
স্ট্রিম রেসপন্স থেকে, সম্পূর্ণ অ্যাড ইভেন্ট আইডিটি
media_verification_urlভ্যালুর সাথে যুক্ত করুন।সম্পূর্ণ 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) ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, একটি লাইভস্ট্রিম মনিটর এবং ট্রাবলশুট করুন দেখুন।