এই নির্দেশিকায় পড সার্ভিং এপিআই এবং আপনার ম্যানিফেস্ট ম্যানিপুলেটর ব্যবহার করে একটি এইচএলএস বা ড্যাশ লাইভস্ট্রিম লোড করার জন্য একটি ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করার পদ্ধতি আলোচনা করা হয়েছে।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে, আপনার নিম্নলিখিত জিনিসগুলো অবশ্যই থাকতে হবে:
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": "c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb: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ভ্যালুটি পড়ুন।metadata_urlএন্ডপয়েন্টে একটি প্রাথমিকGETঅনুরোধ পাঠান।-
delta_tokenকোয়েরি প্যারামিটারটি বাদ দিন। এই প্রক্রিয়ার মাধ্যমে সার্ভার স্ট্রিমের ডিজিটাল ভিডিও রেকর্ডার (DVR) উইন্ডোর সম্পূর্ণ মেটাডেটা ফেরত দিতে পারে। DVR উইন্ডোতে সম্প্রচারের সেই সময়কাল থাকে যা একজন দর্শক রিওয়াইন্ড করে প্লে করতে পারেন। রেসপন্সে একটিnext_delta_tokenফিল্ড অন্তর্ভুক্ত থাকে।
-
ব্যান্ডউইথ অপ্টিমাইজ করতে, সর্বশেষ রেসপন্স থেকে
next_delta_tokenভ্যালুটি স্টোর করুন।আপনার পরবর্তী অনুরোধে, সেই মানটি
delta_tokenকোয়েরি প্যারামিটার হিসেবে পাঠান। সার্ভার শুধুমাত্র সেই মেটাডেটা ফেরত দেয় যা টোকেনটি তৈরি হওয়ার পর থেকে পরিবর্তিত হয়েছে। সর্বদা আপনার প্রাপ্ত সর্বশেষ টোকেনটি পাঠান। টোকেনটি পার্স, পরিবর্তন বা তৈরি করার চেষ্টা করবেন না। বিস্তারিত জানতে, Method: metadata দেখুন।নিম্নলিখিত উদাহরণটি বিজ্ঞাপনের মেটাডেটা সংগ্রহ করে:
// Initial request (returns full metadata and next_delta_token) let response = await fetch(metadata_url); let metadata = await response.json(); let deltaToken = metadata.next_delta_token; // Subsequent request (returns only changes since deltaToken) if (deltaToken) { const url = new URL(metadata_url); url.searchParams.append('delta_token', deltaToken); response = await fetch(url.toString()); const deltaMetadata = await response.json(); // Merge deltaMetadata into your local cache mergeMetadata(metadata, deltaMetadata); deltaToken = deltaMetadata.next_delta_token; }সফল হলে, আপনি PodMetadata রেসপন্স পাবেন। আপনি যদি
delta_tokenপ্যারামিটারটি প্রদান করেন, তাহলে রেসপন্সটিতে শুধুমাত্র সেইসব বিজ্ঞাপন, অ্যাড ব্রেক এবং ট্যাগ থাকবে যা সার্ভার টোকেন তৈরি করার পর যোগ বা আপডেট করেছে। রেসপন্সটিতে একটি নতুনnext_delta_tokenভ্যালুও থাকে। যদি কোনো অ্যাড ব্রেক পুরোনো হয়ে যায়, তাহলে রেসপন্সটিতে আপনার ক্যাশ থেকে সরানোর জন্য অ্যাড ব্রেকগুলোর একটিobsolete_ad_break_idsতালিকাও অন্তর্ভুক্ত থাকে।{ "next_delta_token": "eyJyYW5nZXMiOlt7InMiOjEsImUiOjN9XX0", "obsolete_ad_break_ids": ["0003069407"], "tags":{ "google_1022389921":{ "ad":"0003069408_ad1", "ad_break_id":"0003069408", "type":"start" }, ... }, "ads":{ "0003069408_ad1":{ "ad_break_id":"0003069408", "position":1, "duration":10.01, "title":"External - Pod Midroll 1", "clickthrough_url":"https://.../", ... }, ... }, "ad_breaks":{ "0003069408":{ "type":"mid", "duration":30, "ads":3 }, ... } }tagsঅবজেক্টটি সংরক্ষণ করুন এবং আপডেটগুলি আপনার স্থানীয় ক্যাশে মার্জ করুন। যদিobsolete_ad_break_idsপ্যারামিটারটি উপস্থিত থাকে, তাহলে আপনার ক্যাশে থেকে সেই অ্যাড ব্রেক এবং সংশ্লিষ্ট বিজ্ঞাপন ও ট্যাগগুলি সরিয়ে ফেলুন।নিয়মিত মেটাডেটা অনুরোধ করার জন্য
polling_frequencyভ্যালুটি ব্যবহার করে একটি টাইমার সেট করুন। প্রতিটি পোলে, সর্বশেষ মেটাডেটা রেসপন্সে প্রাপ্তnext_delta_tokenভ্যালুটিdelta_tokenকোয়েরি প্যারামিটার হিসেবে পাঠান।
আপনার ভিডিও প্লেয়ারে স্ট্রিমটি লোড করুন
রেজিস্ট্রেশন রেসপন্স থেকে সেশন আইডি পাওয়ার পর, সেই আইডিটি আপনার ম্যানিফেস্ট ম্যানিপুলেটরে পাঠান, অথবা ভিডিও প্লেয়ারে স্ট্রিমটি লোড করার জন্য একটি ম্যানিফেস্ট ইউআরএল তৈরি করুন।
সেশন আইডি পাস করার জন্য, আপনার ম্যানিফেস্ট ম্যানিপুলেটরের ডকুমেন্টেশন দেখুন। আপনি যদি একটি ম্যানিফেস্ট ম্যানিপুলেটর তৈরি করেন, তবে ‘লাইভস্ট্রিমের জন্য ম্যানিফেস্ট ম্যানিপুলেটর’ দেখুন।
নিম্নলিখিত উদাহরণটি একটি ম্যানিফেস্ট ইউআরএল তৈরি করে:
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_1022389921", ... }TXXXgoogle_{ad_event_ID}ফরম্যাট ব্যবহার করে ID3 ট্যাগগুলো ফিল্টার করুন:TXXXgoogle_1022389921
বিজ্ঞাপন ইভেন্টের ডেটা দেখান
TagSegment অবজেক্টটি খুঁজে পেতে, নিম্নলিখিতগুলি করুন:
'Poll ad metadata' থেকে বিজ্ঞাপনের মেটাডেটা
tagsঅবজেক্টটি পুনরুদ্ধার করুন।tagsঅবজেক্টটি হলোTagSegmentঅবজেক্টের একটি অ্যারে।'
progressটাইপের একটিTagSegmentঅবজেক্ট খুঁজে পেতে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডিটি ব্যবহার করুন।অন্যান্য ধরনের
TagSegmentঅবজেক্ট খুঁজে পেতে অ্যাড ইভেন্ট আইডির প্রথম ১৭টি অক্ষর ব্যবহার করুন।যেহেতু আপনার ক্লায়েন্ট অ্যাপ পর্যায়ক্রমে বিজ্ঞাপনের মেটাডেটা পোল করে, তাই আপনার ভিডিও প্লেয়ার যখন স্ট্রিমে একটি ID3 ট্যাগ খুঁজে পায় এবং যখন এর সাথে সম্পর্কিত মেটাডেটা উপলব্ধ হয়, তার মধ্যে একটি বিলম্ব হতে পারে। যদি আপনার ক্লায়েন্ট অ্যাপ সংরক্ষিত ট্যাগগুলির মধ্যে কোনো ID3 ট্যাগ খুঁজে না পায়, তবে ট্যাগটিকে একটি কিউ-তে রাখুন এবং পরবর্তী মেটাডেটা পোলের পরে ট্যাগটি পুনরায় প্রসেস করুন। প্রসেসিং শেষ না হওয়া পর্যন্ত ট্যাগটিকে কিউ-তে রাখুন।
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_1022389921`; const response = await fetch(completeUrl);সফল হলে, আপনি একটি কোড স্ট্যাটাস
202রেসপন্স পাবেন। অন্যথায়, আপনি একটি404এরর কোড পাবেন।
আপনি সমস্ত বিজ্ঞাপন ইভেন্টের ঐতিহাসিক লগ পরিদর্শন করতে স্ট্রিম অ্যাক্টিভিটি মনিটর (SAM) ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, একটি লাইভস্ট্রিম মনিটর এবং ট্রাবলশুট করুন দেখুন।
,এই নির্দেশিকায় পড সার্ভিং এপিআই এবং আপনার ম্যানিফেস্ট ম্যানিপুলেটর ব্যবহার করে একটি এইচএলএস বা ড্যাশ লাইভস্ট্রিম লোড করার জন্য একটি ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করার পদ্ধতি আলোচনা করা হয়েছে।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে, আপনার নিম্নলিখিত জিনিসগুলো অবশ্যই থাকতে হবে:
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": "c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb: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ভ্যালুটি পড়ুন।metadata_urlএন্ডপয়েন্টে একটি প্রাথমিকGETঅনুরোধ পাঠান।-
delta_tokenকোয়েরি প্যারামিটারটি বাদ দিন। এই প্রক্রিয়ার মাধ্যমে সার্ভার স্ট্রিমের ডিজিটাল ভিডিও রেকর্ডার (DVR) উইন্ডোর সম্পূর্ণ মেটাডেটা ফেরত দিতে পারে। DVR উইন্ডোতে সম্প্রচারের সেই সময়কাল থাকে যা একজন দর্শক রিওয়াইন্ড করে প্লে করতে পারেন। রেসপন্সে একটিnext_delta_tokenফিল্ড অন্তর্ভুক্ত থাকে।
-
ব্যান্ডউইথ অপ্টিমাইজ করতে, সর্বশেষ রেসপন্স থেকে
next_delta_tokenভ্যালুটি স্টোর করুন।আপনার পরবর্তী অনুরোধে, সেই মানটি
delta_tokenকোয়েরি প্যারামিটার হিসেবে পাঠান। সার্ভার শুধুমাত্র সেই মেটাডেটা ফেরত দেয় যা টোকেনটি তৈরি হওয়ার পর থেকে পরিবর্তিত হয়েছে। সর্বদা আপনার প্রাপ্ত সর্বশেষ টোকেনটি পাঠান। টোকেনটি পার্স, পরিবর্তন বা তৈরি করার চেষ্টা করবেন না। বিস্তারিত জানতে, Method: metadata দেখুন।নিম্নলিখিত উদাহরণটি বিজ্ঞাপনের মেটাডেটা সংগ্রহ করে:
// Initial request (returns full metadata and next_delta_token) let response = await fetch(metadata_url); let metadata = await response.json(); let deltaToken = metadata.next_delta_token; // Subsequent request (returns only changes since deltaToken) if (deltaToken) { const url = new URL(metadata_url); url.searchParams.append('delta_token', deltaToken); response = await fetch(url.toString()); const deltaMetadata = await response.json(); // Merge deltaMetadata into your local cache mergeMetadata(metadata, deltaMetadata); deltaToken = deltaMetadata.next_delta_token; }সফল হলে, আপনি PodMetadata রেসপন্স পাবেন। আপনি যদি
delta_tokenপ্যারামিটারটি প্রদান করেন, তাহলে রেসপন্সটিতে শুধুমাত্র সেইসব বিজ্ঞাপন, অ্যাড ব্রেক এবং ট্যাগ থাকবে যা সার্ভার টোকেন তৈরি করার পর যোগ বা আপডেট করেছে। রেসপন্সটিতে একটি নতুনnext_delta_tokenভ্যালুও থাকে। যদি কোনো অ্যাড ব্রেক পুরোনো হয়ে যায়, তাহলে রেসপন্সটিতে আপনার ক্যাশ থেকে সরানোর জন্য অ্যাড ব্রেকগুলোর একটিobsolete_ad_break_idsতালিকাও অন্তর্ভুক্ত থাকে।{ "next_delta_token": "eyJyYW5nZXMiOlt7InMiOjEsImUiOjN9XX0", "obsolete_ad_break_ids": ["0003069407"], "tags":{ "google_1022389921":{ "ad":"0003069408_ad1", "ad_break_id":"0003069408", "type":"start" }, ... }, "ads":{ "0003069408_ad1":{ "ad_break_id":"0003069408", "position":1, "duration":10.01, "title":"External - Pod Midroll 1", "clickthrough_url":"https://.../", ... }, ... }, "ad_breaks":{ "0003069408":{ "type":"mid", "duration":30, "ads":3 }, ... } }tagsঅবজেক্টটি সংরক্ষণ করুন এবং আপডেটগুলি আপনার স্থানীয় ক্যাশে মার্জ করুন। যদিobsolete_ad_break_idsপ্যারামিটারটি উপস্থিত থাকে, তাহলে আপনার ক্যাশে থেকে সেই অ্যাড ব্রেক এবং সংশ্লিষ্ট বিজ্ঞাপন ও ট্যাগগুলি সরিয়ে ফেলুন।নিয়মিত মেটাডেটা অনুরোধ করার জন্য
polling_frequencyভ্যালুটি ব্যবহার করে একটি টাইমার সেট করুন। প্রতিটি পোলে, সর্বশেষ মেটাডেটা রেসপন্সে প্রাপ্তnext_delta_tokenভ্যালুটিdelta_tokenকোয়েরি প্যারামিটার হিসেবে পাঠান।
আপনার ভিডিও প্লেয়ারে স্ট্রিমটি লোড করুন
রেজিস্ট্রেশন রেসপন্স থেকে সেশন আইডি পাওয়ার পর, সেই আইডিটি আপনার ম্যানিফেস্ট ম্যানিপুলেটরে পাঠান, অথবা ভিডিও প্লেয়ারে স্ট্রিমটি লোড করার জন্য একটি ম্যানিফেস্ট ইউআরএল তৈরি করুন।
সেশন আইডি পাস করার জন্য, আপনার ম্যানিফেস্ট ম্যানিপুলেটরের ডকুমেন্টেশন দেখুন। আপনি যদি একটি ম্যানিফেস্ট ম্যানিপুলেটর তৈরি করেন, তবে ‘লাইভস্ট্রিমের জন্য ম্যানিফেস্ট ম্যানিপুলেটর’ দেখুন।
নিম্নলিখিত উদাহরণটি একটি ম্যানিফেস্ট ইউআরএল তৈরি করে:
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_1022389921", ... }TXXXgoogle_{ad_event_ID}ফরম্যাট ব্যবহার করে ID3 ট্যাগগুলো ফিল্টার করুন:TXXXgoogle_1022389921
বিজ্ঞাপন ইভেন্টের ডেটা দেখান
TagSegment অবজেক্টটি খুঁজে পেতে, নিম্নলিখিতগুলি করুন:
'Poll ad metadata' থেকে বিজ্ঞাপনের মেটাডেটা
tagsঅবজেক্টটি পুনরুদ্ধার করুন।tagsঅবজেক্টটি হলোTagSegmentঅবজেক্টের একটি অ্যারে।'
progressটাইপের একটিTagSegmentঅবজেক্ট খুঁজে পেতে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডিটি ব্যবহার করুন।অন্যান্য ধরনের
TagSegmentঅবজেক্ট খুঁজে পেতে অ্যাড ইভেন্ট আইডির প্রথম ১৭টি অক্ষর ব্যবহার করুন।যেহেতু আপনার ক্লায়েন্ট অ্যাপ পর্যায়ক্রমে বিজ্ঞাপনের মেটাডেটা পোল করে, তাই আপনার ভিডিও প্লেয়ার যখন স্ট্রিমে একটি ID3 ট্যাগ খুঁজে পায় এবং যখন এর সাথে সম্পর্কিত মেটাডেটা উপলব্ধ হয়, তার মধ্যে একটি বিলম্ব হতে পারে। যদি আপনার ক্লায়েন্ট অ্যাপ সংরক্ষিত ট্যাগগুলির মধ্যে কোনো ID3 ট্যাগ খুঁজে না পায়, তবে ট্যাগটিকে একটি কিউ-তে রাখুন এবং পরবর্তী মেটাডেটা পোলের পরে ট্যাগটি পুনরায় প্রসেস করুন। প্রসেসিং শেষ না হওয়া পর্যন্ত ট্যাগটিকে কিউ-তে রাখুন।
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_1022389921`; const response = await fetch(completeUrl);সফল হলে, আপনি একটি কোড স্ট্যাটাস
202রেসপন্স পাবেন। অন্যথায়, আপনি একটি404এরর কোড পাবেন।
আপনি সমস্ত বিজ্ঞাপন ইভেন্টের ঐতিহাসিক লগ পরিদর্শন করতে স্ট্রিম অ্যাক্টিভিটি মনিটর (SAM) ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, একটি লাইভস্ট্রিম মনিটর এবং ট্রাবলশুট করুন দেখুন।
,এই নির্দেশিকায় পড সার্ভিং এপিআই এবং আপনার ম্যানিফেস্ট ম্যানিপুলেটর ব্যবহার করে একটি এইচএলএস বা ড্যাশ লাইভস্ট্রিম লোড করার জন্য একটি ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করার পদ্ধতি আলোচনা করা হয়েছে।
পূর্বশর্ত
এগিয়ে যাওয়ার আগে, আপনার নিম্নলিখিত জিনিসগুলো অবশ্যই থাকতে হবে:
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": "c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb: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ভ্যালুটি পড়ুন।metadata_urlএন্ডপয়েন্টে একটি প্রাথমিকGETঅনুরোধ পাঠান।-
delta_tokenকোয়েরি প্যারামিটারটি বাদ দিন। এই প্রক্রিয়ার মাধ্যমে সার্ভার স্ট্রিমের ডিজিটাল ভিডিও রেকর্ডার (DVR) উইন্ডোর সম্পূর্ণ মেটাডেটা ফেরত দিতে পারে। DVR উইন্ডোতে সম্প্রচারের সেই সময়কাল থাকে যা একজন দর্শক রিওয়াইন্ড করে প্লে করতে পারেন। রেসপন্সে একটিnext_delta_tokenফিল্ড অন্তর্ভুক্ত থাকে।
-
ব্যান্ডউইথ অপ্টিমাইজ করতে, সর্বশেষ রেসপন্স থেকে
next_delta_tokenভ্যালুটি স্টোর করুন।আপনার পরবর্তী অনুরোধে, সেই মানটি
delta_tokenকোয়েরি প্যারামিটার হিসেবে পাঠান। সার্ভার শুধুমাত্র সেই মেটাডেটা ফেরত দেয় যা টোকেনটি তৈরি হওয়ার পর থেকে পরিবর্তিত হয়েছে। সর্বদা আপনার প্রাপ্ত সর্বশেষ টোকেনটি পাঠান। টোকেনটি পার্স, পরিবর্তন বা তৈরি করার চেষ্টা করবেন না। বিস্তারিত জানতে, Method: metadata দেখুন।নিম্নলিখিত উদাহরণটি বিজ্ঞাপনের মেটাডেটা সংগ্রহ করে:
// Initial request (returns full metadata and next_delta_token) let response = await fetch(metadata_url); let metadata = await response.json(); let deltaToken = metadata.next_delta_token; // Subsequent request (returns only changes since deltaToken) if (deltaToken) { const url = new URL(metadata_url); url.searchParams.append('delta_token', deltaToken); response = await fetch(url.toString()); const deltaMetadata = await response.json(); // Merge deltaMetadata into your local cache mergeMetadata(metadata, deltaMetadata); deltaToken = deltaMetadata.next_delta_token; }সফল হলে, আপনি PodMetadata রেসপন্স পাবেন। আপনি যদি
delta_tokenপ্যারামিটারটি প্রদান করেন, তাহলে রেসপন্সটিতে শুধুমাত্র সেইসব বিজ্ঞাপন, অ্যাড ব্রেক এবং ট্যাগ থাকবে যা সার্ভার টোকেন তৈরি করার পর যোগ বা আপডেট করেছে। রেসপন্সটিতে একটি নতুনnext_delta_tokenভ্যালুও থাকে। যদি কোনো অ্যাড ব্রেক পুরোনো হয়ে যায়, তাহলে রেসপন্সটিতে আপনার ক্যাশ থেকে সরানোর জন্য অ্যাড ব্রেকগুলোর একটিobsolete_ad_break_idsতালিকাও অন্তর্ভুক্ত থাকে।{ "next_delta_token": "eyJyYW5nZXMiOlt7InMiOjEsImUiOjN9XX0", "obsolete_ad_break_ids": ["0003069407"], "tags":{ "google_1022389921":{ "ad":"0003069408_ad1", "ad_break_id":"0003069408", "type":"start" }, ... }, "ads":{ "0003069408_ad1":{ "ad_break_id":"0003069408", "position":1, "duration":10.01, "title":"External - Pod Midroll 1", "clickthrough_url":"https://.../", ... }, ... }, "ad_breaks":{ "0003069408":{ "type":"mid", "duration":30, "ads":3 }, ... } }tagsঅবজেক্টটি সংরক্ষণ করুন এবং আপডেটগুলি আপনার স্থানীয় ক্যাশে মার্জ করুন। যদিobsolete_ad_break_idsপ্যারামিটারটি উপস্থিত থাকে, তাহলে আপনার ক্যাশে থেকে সেই অ্যাড ব্রেক এবং সংশ্লিষ্ট বিজ্ঞাপন ও ট্যাগগুলি সরিয়ে ফেলুন।নিয়মিত মেটাডেটা অনুরোধ করার জন্য
polling_frequencyভ্যালুটি ব্যবহার করে একটি টাইমার সেট করুন। প্রতিটি পোলে, সর্বশেষ মেটাডেটা রেসপন্সে প্রাপ্তnext_delta_tokenভ্যালুটিdelta_tokenকোয়েরি প্যারামিটার হিসেবে পাঠান।
আপনার ভিডিও প্লেয়ারে স্ট্রিমটি লোড করুন
রেজিস্ট্রেশন রেসপন্স থেকে সেশন আইডি পাওয়ার পর, সেই আইডিটি আপনার ম্যানিফেস্ট ম্যানিপুলেটরে পাঠান, অথবা ভিডিও প্লেয়ারে স্ট্রিমটি লোড করার জন্য একটি ম্যানিফেস্ট ইউআরএল তৈরি করুন।
সেশন আইডি পাস করার জন্য, আপনার ম্যানিফেস্ট ম্যানিপুলেটরের ডকুমেন্টেশন দেখুন। আপনি যদি একটি ম্যানিফেস্ট ম্যানিপুলেটর তৈরি করেন, তবে ‘লাইভস্ট্রিমের জন্য ম্যানিফেস্ট ম্যানিপুলেটর’ দেখুন।
নিম্নলিখিত উদাহরণটি একটি ম্যানিফেস্ট ইউআরএল তৈরি করে:
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_1022389921", ... }TXXXgoogle_{ad_event_ID}ফরম্যাট ব্যবহার করে ID3 ট্যাগগুলো ফিল্টার করুন:TXXXgoogle_1022389921
বিজ্ঞাপন ইভেন্টের ডেটা দেখান
TagSegment অবজেক্টটি খুঁজে পেতে, নিম্নলিখিতগুলি করুন:
'Poll ad metadata' থেকে বিজ্ঞাপনের মেটাডেটা
tagsঅবজেক্টটি পুনরুদ্ধার করুন।tagsঅবজেক্টটি হলোTagSegmentঅবজেক্টের একটি অ্যারে।'
progressটাইপের একটিTagSegmentঅবজেক্ট খুঁজে পেতে সম্পূর্ণ বিজ্ঞাপন ইভেন্ট আইডিটি ব্যবহার করুন।অন্যান্য ধরনের
TagSegmentঅবজেক্ট খুঁজে পেতে অ্যাড ইভেন্ট আইডির প্রথম ১৭টি অক্ষর ব্যবহার করুন।যেহেতু আপনার ক্লায়েন্ট অ্যাপ পর্যায়ক্রমে বিজ্ঞাপনের মেটাডেটা পোল করে, তাই আপনার ভিডিও প্লেয়ার যখন স্ট্রিমে একটি ID3 ট্যাগ খুঁজে পায় এবং যখন এর সাথে সম্পর্কিত মেটাডেটা উপলব্ধ হয়, তার মধ্যে একটি বিলম্ব হতে পারে। যদি আপনার ক্লায়েন্ট অ্যাপ সংরক্ষিত ট্যাগগুলির মধ্যে কোনো ID3 ট্যাগ খুঁজে না পায়, তবে ট্যাগটিকে একটি কিউ-তে রাখুন এবং পরবর্তী মেটাডেটা পোলের পরে ট্যাগটি পুনরায় প্রসেস করুন। প্রসেসিং শেষ না হওয়া পর্যন্ত ট্যাগটিকে কিউ-তে রাখুন।
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_1022389921`; const response = await fetch(completeUrl);সফল হলে, আপনি একটি কোড স্ট্যাটাস
202রেসপন্স পাবেন। অন্যথায়, আপনি একটি404এরর কোড পাবেন।
আপনি সমস্ত বিজ্ঞাপন ইভেন্টের ঐতিহাসিক লগ পরিদর্শন করতে স্ট্রিম অ্যাক্টিভিটি মনিটর (SAM) ব্যবহার করতে পারেন। বিস্তারিত জানার জন্য, একটি লাইভস্ট্রিম মনিটর এবং ট্রাবলশুট করুন দেখুন।