পড সার্ভিং এপিআই এমনভাবে প্রস্তুত করা অভিযোজিত-বিটরেট ভিডিও বিজ্ঞাপন পডগুলিতে অ্যাক্সেস সরবরাহ করে যাতে সেগুলি সরাসরি ব্যবহারকারী-মুখী HLS বা MPEG-DASH মিডিয়া প্লেলিস্টে সেলাই করা যায়।
এই নির্দেশিকাটি VOD স্ট্রিমগুলির জন্য একটি মৌলিক পড সার্ভিং ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার বাস্তবায়নের উপর দৃষ্টি নিবদ্ধ করে৷
স্ট্রিম ম্যানিফেস্ট অনুরোধ গ্রহণ করুন
ভিডিও প্লেয়ার ক্লায়েন্ট অ্যাপ থেকে ম্যানিফেস্ট অনুরোধ শোনার জন্য আপনার ম্যানিফেস্ট ম্যানিপুলেটরকে অবশ্যই একটি API এন্ডপয়েন্ট প্রদান করতে হবে। ন্যূনতম, এই এন্ডপয়েন্টটিকে অবশ্যই ক্লায়েন্ট প্লেয়ার অ্যাপ থেকে একটি স্ট্রিম আইডি সংগ্রহ করতে হবে। এই স্ট্রিম আইডিটি আপনার অ্যাড পড অনুরোধে অ্যাড ম্যানেজারের কাছে স্ট্রিমিং সেশন শনাক্ত করতে ব্যবহার করা হয়।
উপযুক্ত কন্টেন্ট স্ট্রিম শনাক্ত করার জন্য আপনাকে আরও কিছু তথ্য সংগ্রহ করতে হবে, উদাহরণস্বরূপ, একটি সামগ্রী আইডি।
উদাহরণ ম্যানিফেস্ট অনুরোধ শেষ পয়েন্ট
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
পাথ প্যারামিটার | |||||
---|---|---|---|---|---|
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে অ্যাড ম্যানেজার স্ট্রিম আইডি। | ||||
content_id | আপনার সিস্টেমের কন্টেন্ট ভিডিওর সাথে সম্পর্কিত একটি অনুমানমূলক আইডি। | ||||
format | স্ট্রিম ফর্ম্যাটের সাথে সম্পর্কিত একটি অনুমানমূলক পরামিতি। যেকোনো একটি:
|
বিষয়বস্তু স্ট্রীম পুনরুদ্ধার করুন
বিজ্ঞাপনের সাথে স্টিচ করার জন্য সামগ্রী স্ট্রীম নির্বাচন করতে ম্যানিফেস্ট অনুরোধ থেকে সংগৃহীত সামগ্রী আইডি ব্যবহার করুন।
অনুরোধ বিজ্ঞাপন পড ম্যানিফেস্ট
অ্যাড ম্যানেজার থেকে বিজ্ঞাপনের জন্য অনুরোধ করতে, আপনার সার্ভারকে অনুরোধ করা এনকোডিং প্রোফাইল এবং বিজ্ঞাপন ট্যাগ পাস করে বিজ্ঞাপন পডের শেষ পয়েন্টে একটি POST অনুরোধ করতে হবে। এই অনুরোধে স্ট্রিম আইডিও অন্তর্ভুক্ত রয়েছে যা আপনি ধাপ 1 এ সংগ্রহ করেছেন।
বিনিময়ে, আপনি প্রকাশকের বিজ্ঞাপন ট্যাগ দ্বারা অনুরোধ করা বিজ্ঞাপন পডগুলির জন্য ম্যানিফেস্ট ফাইল ধারণকারী বিজ্ঞাপন পড অবজেক্টের একটি তালিকা এবং কখন এবং কোথায় সেগুলি আপনার সামগ্রীতে ঢোকানো উচিত সে সম্পর্কে তথ্য পাবেন৷
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
পাথ প্যারামিটার | |
---|---|
network_code | প্রকাশকের Ad Manager 360 নেটওয়ার্ক কোড। |
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে স্ট্রিম আইডি। |
JSON বডি
শরীরের পরামিতি | ||
---|---|---|
encoding_profiles | Required | প্রতিটি বিজ্ঞাপন বিরতির জন্য আপনি যে এনকোডিং প্রোফাইলগুলি পেতে চান তার JSON উপস্থাপনাগুলির একটি তালিকা৷ নীচে বিস্তারিত দেখুন প্লেব্যাক যতটা সম্ভব নির্বিঘ্ন করতে, এটি আপনার কন্টেন্ট স্ট্রীমে ব্যবহৃত এনকোডিং প্রোফাইলের সেটের সাথে মেলে। |
ad_tag | Required | VMAP বিজ্ঞাপনের অনুরোধ করার জন্য একটি বিজ্ঞাপন ট্যাগ। |
cuepoints | Optional | কন্টেন্ট স্ট্রীমের মধ্যে কিউ পয়েন্টগুলির একটি তালিকা যেখানে মিডরোল বিজ্ঞাপন বিরতিগুলি সন্নিবেশ করা হবে৷ কিউ পয়েন্ট ফ্লোটিং পয়েন্ট সেকেন্ডে পরিমাপ করা হয়। অবস্থানগত সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
content_duration_seconds | Optional | বিষয়বস্তুর সময়কাল সেকেন্ডে। শতাংশ সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
manifest_type | Optional | অনুরোধ করা বিজ্ঞাপন স্ট্রিমগুলির বিন্যাস, হয় hls বা dash ৷ ডিফল্ট মান হল hls । |
dai_options | Optional | ম্যানিফেস্টগুলি কীভাবে রেন্ডার করা হয় তার দিকগুলি নিয়ন্ত্রণকারী অতিরিক্ত বিকল্পগুলি৷ নীচে বিস্তারিত দেখুন |
এনকোডিং প্রোফাইল | ||
profile_name | Required | এই এনকোডিং প্রোফাইলের জন্য একটি শনাক্তকারী। এই মানটি আপনার চয়ন করা যেকোনো স্ট্রিং হতে পারে, তবে একই স্ট্রীমে একই নামের একাধিক এনকোডিং প্রোফাইল থাকতে পারে না। |
type | Required | এই এনকোডিং প্রোফাইল দ্বারা বর্ণিত স্ট্রীমের এনকোডিং প্রকার। বিষয়বস্তুর প্রকারগুলি হল: media , iframe , subtitles । |
container_type | Required | এই এনকোডিং প্রোফাইল দ্বারা ব্যবহৃত ধারক বিন্যাস। কন্টেইনার ফর্ম্যাটগুলি হল: mpeg2ts , fmp4cmaf , hls_packed_audio |
video_settings | Optional | এনকোডিং প্রোফাইল টাইপ যদি iframe হয় তাহলে প্রয়োজনীয়। অন্যথায়, শুধুমাত্র মিডিয়া টাইপ ভিডিও ধারণ করলেই অনুমোদিত। নীচে বিস্তারিত দেখুন |
audio_settings | Optional | এনকোডিং প্রোফাইলে অডিও থাকলে প্রয়োজন। টাইপ মিডিয়া হলে শুধুমাত্র অনুমোদিত. নীচে বিস্তারিত দেখুন |
subtitle_settings | Optional | এনকোডিং প্রোফাইলে সাবটাইটেল থাকলে প্রয়োজন। নীচে বিস্তারিত দেখুন |
ভিডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ ভিডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। |
frames_per_second | Required | ভিডিওর ফ্লোটিং পয়েন্ট FPS। |
resolution | Required | একটি JSON-এনকোড করা মান যাতে পিক্সেলে ভিডিও `প্রস্থ` এবং `উচ্চতা` রয়েছে। উদাহরণ: |
অডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ অডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। উদাহরণ: |
channels | Required | কম ফ্রিকোয়েন্সি চ্যানেল সহ অডিও চ্যানেলের সংখ্যা প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। |
sample_rate | Required | হার্টজে অডিও স্যাম্পলিং রেট প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। উদাহরণ: |
সাবটাইটেল সেটিংস | ||
format | Required | ইন-ব্যান্ড সাবটাইটেল দ্বারা ব্যবহৃত ফাইল বিন্যাস। সমর্থিত মান হল webvtt বা ttml . |
language | Optional | একটি RFC5646 ভাষা স্ট্রিং হিসাবে সাবটাইটেল ভাষা। প্রদান করা হলে, এই মান শুধুমাত্র DASH রেন্ডারিংয়ের জন্য ব্যবহার করা হয়। উদাহরণ: en |
DAI বিকল্প | ||
dash_profile | Optional | অ্যাড পড ম্যানিফেস্টে প্রয়োগ করার জন্য MPEG-DASH প্রোফাইল৷ এই সেটিংটি শুধুমাত্র DASH ম্যানিফেস্টের জন্য ব্যবহার করা হয়। অনুমোদিত মানগুলি live বা on-demand । ডিফল্ট মান হল on-demand । মান |
ad_pod_timeout | Optional | ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপন নির্বাচন এবং বিজ্ঞাপন পড তৈরি করতে ব্যয় করার সর্বাধিক সময়। এই সময় অতিবাহিত হওয়ার পরে, অ্যাড ম্যানেজার ad_pods প্রতিক্রিয়াতে ইতিমধ্যে নির্বাচিত যে কোনও বিজ্ঞাপন ফেরত দেয় এবং প্রক্রিয়াকরণ বন্ধ করে দেয়। |
sam_id | Optional | একটি বিকল্প ডিবাগ কী নির্দিষ্ট করে যা স্ট্রিম অ্যাক্টিভিটি মনিটরে সেশন দেখতে ব্যবহার করা যেতে পারে। |
প্রতিক্রিয়া
প্রতিক্রিয়া পরামিতি | |
---|---|
valid_for | সময়কাল যার জন্য এই বিজ্ঞাপন পড প্লেলিস্টগুলি dhms (দিন, ঘন্টা, মিনিট, সেকেন্ড) বিন্যাসে বৈধ। |
valid_until | যে তারিখ এবং সময় পর্যন্ত এই বিজ্ঞাপন পড প্লেলিস্টগুলি yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm ফর্ম্যাটে, ISO8601 তারিখের স্ট্রিং হিসাবে বৈধ। |
ad_pods | এই স্ট্রীমের জন্য নির্বাচিত বিজ্ঞাপন পডগুলির একটি তালিকা৷ |
বিজ্ঞাপন পড | |
manifest_uris | শুধুমাত্র HLS স্ট্রিমগুলির জন্য। HLS ম্যানিফেস্ট URI-তে প্রোফাইল আইডি এনকোড করার একটি মানচিত্র। |
mpd_uri | শুধুমাত্র DASH স্ট্রীমের জন্য। DASH MPD-এর URI। |
type | বিজ্ঞাপন পডের ধরন। বিজ্ঞাপন পডের প্রকারগুলি হল: pre , mid বা post । |
start | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. স্ট্রীমের অবস্থান যেখানে এই বিজ্ঞাপন পডটি ঢোকানো উচিত, ফ্লোটিং পয়েন্ট সেকেন্ডে। |
duration | ফ্লোটিং পয়েন্ট সেকেন্ডে এই বিজ্ঞাপন পডের সময়কাল। |
midroll_index | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. বর্তমান মিড-রোল বিজ্ঞাপন পডের সূচক। সূচীকরণ 1 দিয়ে শুরু হয়। |
উদাহরণ অনুরোধ (cURL)
curl -X POST \
-d '@request-body.json' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/streams/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/adpods
উদাহরণ অনুরোধ বডি
এটি হল request-body.json
এর বিষয়বস্তু যা উপরের সিআরএল কলে উল্লেখ করা হয়েছে।
{
"encoding_profiles": [
{
"profile_name": "1080p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000c",
"bitrate": 5000000,
"frames_per_second": 30.0,
"resolution": {
"width": 1920,
"height": 1080
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 300000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "360p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000d",
"bitrate": 1000000,
"frames_per_second": 30.0,
"resolution": {
"width": 640,
"height": 360
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 64000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "subtitles-webvtt",
"type": "subtitles",
"subtitle_settings": {
"format": "webvtt"
}
}
],
"ad_tag": "https://pubads.g.doubleclick.net/gampad/ads?...",
"manifest_type": "hls"
}
উদাহরণ প্রতিক্রিয়া
{
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00",
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/1/profile/subtitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
]"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt""
},
"type": "post",
"duration": 10.0
}
]
}
বিষয়বস্তু মধ্যে বিজ্ঞাপন পড সেলাই
আপনার বিষয়বস্তু স্ট্রীমগুলিতে বিজ্ঞাপন পড সেলাই করার প্রক্রিয়া আপনার বাস্তবায়ন, স্ট্রিম বিন্যাস এবং আপনি বিন্যাসের নির্দিষ্টকরণ থেকে প্রয়োগ করতে বেছে নেওয়া বৈশিষ্ট্যগুলির উপর নির্ভর করে পরিবর্তিত হয়। নিম্নলিখিত কর্মপ্রবাহগুলি এই প্রক্রিয়াটি কীভাবে পরিচালনা করতে হয় তার পরামর্শ। আপনার ব্যবসার প্রয়োজন এবং আপনার বিষয়বস্তু স্ট্রীমের উপর ভিত্তি করে আপনার বাস্তবায়নের সুনির্দিষ্ট বিবরণ পরিবর্তিত হতে পারে।
HLS স্ট্রীম
আপনি যদি HLS ফর্ম্যাটে একটি স্ট্রীম সেলাই করেন, তাহলে আপনার সামগ্রী স্ট্রীমটি প্রতিটি এনকোডিং প্রোফাইলের জন্য পৃথক স্ট্রিম ম্যানিফেস্টের লিঙ্কগুলির একটি মাল্টিভেরিয়েন্ট প্লেলিস্ট হবে৷ আপনার বিজ্ঞাপন পডগুলিকে এই বৈকল্পিক ম্যানিফেস্টগুলির প্রতিটিতে ঢোকানো দরকার৷ এটি করার একটি উপায় হল সমস্ত ভেরিয়েন্ট ম্যানিফেস্ট প্রস্তুত করা এবং হোস্টিং এর জন্য একটি বিষয়বস্তু বিতরণ নেটওয়ার্ক (CDN) এ প্রেরণ করা। চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্ট হল এই CDN-হোস্ট করা ম্যানিফেস্টগুলির লিঙ্কগুলির একটি সেট৷
এনকোডিং প্রোফাইলের উপর পুনরাবৃত্তি করুন
প্রতিটি এনকোডিং প্রোফাইলের জন্য, অ্যাড ম্যানেজারের প্রতিক্রিয়া থেকে সংশ্লিষ্ট সমস্ত বিজ্ঞাপন পড মেনিফেস্ট সংগ্রহ করুন, তাদের সংশ্লিষ্ট শুরুর সময় সহ। প্রি-রোল বিজ্ঞাপন পডের জন্য, শুরুর সময় 0
এ সেট করুন। পোস্ট-রোলগুলির জন্য, বিজ্ঞাপন পডের শুরুর সময় হিসাবে সামগ্রীর সময়কাল ব্যবহার করুন৷ প্রতিটি এনকোডিং প্রোফাইলের অডিও এবং ভিডিও সেটিংসের সাথে মেলে মাল্টিভেরিয়েন্ট প্লেলিস্টে বৈকল্পিক স্ট্রীম সনাক্ত করুন৷
উদাহরণ বিজ্ঞাপন পড অ্যারে
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/0/profile/subitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/1/profile/subitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/2/profile/subitles-en.vtt"
},
"type": "post",
"duration": 10.0
}
]
মাল্টিভেরিয়েন্ট কন্টেন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://{...}/subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://{...}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://{...}/360p.m3u8
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Profile settings: {...}
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://{...}/pod/0/profile/1080p.m3u8
15 -> https://{...}/pod/1/profile/1080p.m3u8
600 -> https://{...}/pod/2/profile/1080p.m3u8
প্রতিটি বৈকল্পিক ম্যানিফেস্টে বিজ্ঞাপন সন্নিবেশ করান
প্রতিটি বৈকল্পিক স্ট্রীমের জন্য, সামগ্রী ম্যানিফেস্টের সেগমেন্টগুলির মধ্য দিয়ে যান, একটি চলমান সামগ্রীর মোট সময় অতিবাহিত করুন৷ যখন আপনি একটি বিজ্ঞাপন পডের শুরুর অবস্থানে আসেন, তখন বিজ্ঞাপন পডের ম্যানিফেস্ট থেকে সেগমেন্টের তালিকা বের করুন, দুটি #EXT-X-DISCONTINUITY
ট্যাগে সেগমেন্টের তালিকা মুড়ে দিন এবং সামগ্রী ম্যানিফেস্টে বর্তমান অবস্থানে তালিকাটি সন্নিবেশ করুন . সমস্ত বিজ্ঞাপন পড এবং ভেরিয়েন্ট স্ট্রীম প্রক্রিয়া না হওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান।
ফলস্বরূপ ম্যানিফেস্টগুলি অবশ্যই এইচএলএস স্ট্যান্ডার্ডের সাথে সঙ্গতিপূর্ণ হবে। অতএব, আপনার বিষয়বস্তু ম্যানিফেস্টের স্পেসিফিকেশনের কোন বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করে তার উপর নির্ভর করে, মিডিয়া সিকোয়েন্স নম্বর, বিষয়বস্তুর সময়কাল, বিচ্ছিন্নতা ক্রম নম্বর এবং অন্য কোনও ট্যাগ যা আপডেট করতে হবে তা ঠিক করার জন্য আপনাকে সম্মিলিত ম্যানিফেস্টের উপর একটি চূড়ান্ত পাস করতে হতে পারে। অ্যাকাউন্টে নতুন বিজ্ঞাপন বিভাগ। স্ট্যান্ডার্ডের সাথে কোনো অসঙ্গতি মেরামত হয়ে গেলে, হোস্টিংয়ের জন্য প্রতিটি ব্যবহারকারী-নির্দিষ্ট বৈকল্পিক ম্যানিফেস্টকে আপনার CDN-এ পুশ করুন।
আপনার বিষয়বস্তু ম্যানিফেস্ট এনক্রিপ্ট করা থাকলে, বর্তমান বিজ্ঞাপন পড শুরুর আগে পাওয়া শেষ এনক্রিপশন কীটি একটি #EXT-X-KEY
ট্যাগে সংরক্ষণ করতে হবে। তারপর, প্রতিটি বিজ্ঞাপন পডের প্রথম অংশের আগে এনক্রিপশন সরাতে আপনাকে #EXT-X-KEY:METHOD=NONE
ট্যাগ যোগ করতে হবে। পরিশেষে, কন্টেন্ট এনক্রিপশন পুনরুদ্ধার করতে আপনাকে অবশ্যই প্রতিটি বিজ্ঞাপন পডের পরে সামগ্রীর প্রথম অংশের আগে সঞ্চিত #EXT-X-KEY
ট্যাগের একটি অনুলিপি যোগ করতে হবে।
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://dai.google.com/{...}pod/0/profile/1080p.m3u8
15 -> https://dai.google.com/{...}pod/1/profile/1080p.m3u8
600 -> https://dai.google.com/{...}pod/2/profile/1080p.m3u8
উদাহরণ কন্টেন্ট ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://{...}/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
উদাহরণ বিজ্ঞাপন পড ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
সেলাই করা বৈকল্পিক ম্যানিফেস্টের উদাহরণ
এটি ফলস্বরূপ সেলাই করা ভেরিয়েন্ট ম্যানিফেস্ট হবে, যা CDN-এ পাস করা হবে এবং https://cdn.{...}/{userid}/1080p.m3u8
।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
মাল্টিভেরিয়েন্ট প্লেলিস্ট তৈরি করুন
প্রতিটি সম্পূর্ণ ভেরিয়েন্ট ম্যানিফেস্টের জন্য CDN ঠিকানা সংগ্রহ করুন, সাথে মিলে যাওয়া এনকোডিং প্রোফাইলের বিবরণ সহ, এবং ফলাফলগুলিকে একটি নতুন মাল্টিভেরিয়েন্ট ম্যানিফেস্টে একত্র করুন। এই ব্যবহারকারী-নির্দিষ্ট ম্যানিফেস্টটি ম্যানিফেস্ট অনুরোধের প্রতিক্রিয়া হিসাবে ফেরত দেওয়া হয়েছে যা আপনি ধাপ 1 এ পেয়েছেন।
চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://cdn.{...}-subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://cdn.{...}/{userid}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://cdn.{...}/{userid}/360p.m3u8
MPEG DASH স্ট্রীম
আপনি যদি MPEG DASH ফরম্যাটে একটি স্ট্রিম সেলাই করছেন, তাহলে আপনাকে শুধুমাত্র একটি ফাইল তৈরি করতে হবে। এটি DASH স্ট্রীমগুলিকে HLS এর চেয়ে সহজে সেলাই করতে পারে৷
একটি সঠিকভাবে প্রস্তুত MPEG DASH মিডিয়া প্রেজেন্টেশন বর্ণনা (MPD) ফাইলে বেশ কয়েকটি পিরিয়ড থাকা উচিত, প্রতিটিতে একাধিক উপস্থাপনা থাকে। প্রতিটি উপস্থাপনা আপনার এনকোডিং প্রোফাইলগুলির একটির সাথে মেলে। অ্যাড ম্যানেজার থেকে প্রত্যাবর্তিত প্রতিটি বিজ্ঞাপন পডও একটি MPD ফাইল যাতে সামঞ্জস্যপূর্ণ উপস্থাপনা সহ পিরিয়ডের একটি ক্রম থাকে।
এই MPD ফাইলগুলিকে একসাথে সেলাই করতে, প্রতিটি বিজ্ঞাপন পডের শুরুর সময় নোট করে শুরু করুন৷ প্রি-রোলের জন্য, যেকোনো বিষয়বস্তুর সময়ের আগে প্রি-রোল অ্যাড পড পিরিয়ড ঢোকান। পোস্ট-রোলগুলির জন্য, সমস্ত বিষয়বস্তুর সময়সীমার পরে পোস্টরোল বিজ্ঞাপন পড পিরিয়ডগুলি সন্নিবেশ করুন৷ সমস্ত প্রক্রিয়াকৃত বিষয়বস্তুর সময়কালের জন্য অতিবাহিত খেলার সময় ট্র্যাক করে, সামগ্রী MPD-এ পিরিয়ডের উপর পুনরাবৃত্তি করুন। আপনি যখন বিজ্ঞাপন পডের শুরুর সময়ের সাথে সামঞ্জস্যপূর্ণ সময়ের মধ্যে একটি সীমানায় পৌঁছে যান, তখন সেই সীমানায় মিলিত মিড-রোল অ্যাড পডের MPD ফাইল থেকে পিরিয়ডগুলি সন্নিবেশ করুন৷
চূড়ান্ত সেলাই করা MPD ফাইলটি অবশ্যই MPEG_DASH স্পেসিফিকেশনের সাথে সম্পূর্ণরূপে সঙ্গতিপূর্ণ হতে হবে, তাই আপনাকে যেকোন পিরিয়ডের শুরুর সময় সংশোধন করতে, নতুন সন্নিবেশিত বিজ্ঞাপনের সময়কালের জন্য মিডিয়া উপস্থাপনার সময়কাল ঠিক করতে এবং অন্য যেকোনও সমাধান করতে হতে পারে চূড়ান্ত ফাইলটির উপর আরেকবার পুনরাবৃত্তি করতে হবে। দ্বন্দ্ব যা সেলাই প্রক্রিয়া থেকে উদ্ভূত হতে পারে.
উদাহরণ কন্টেন্ট MPD
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M00.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
উদাহরণ বিজ্ঞাপন পড JSON
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
উদাহরণ বিজ্ঞাপন পড MPD
এটি উপরের বিজ্ঞাপন পড JSON থেকে mpd_uri
এর বিষয়বস্তু।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Ad Pod 1</Title>
</ProgramInformation>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
...
</MPD>
সেলাই করা MPD উদাহরণ
প্রাথমিক স্ট্রিম ম্যানিফেস্ট অনুরোধে আপনার প্রতিক্রিয়া হিসাবে এটি পরিবেশন করুন।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
অতিরিক্ত সম্পদ
- IMA SDK-এর সাথে পড সার্ভিং প্লেব্যাক:
- DAI API এর সাথে পড সার্ভিং প্লেব্যাক
পড সার্ভিং এপিআই এমনভাবে প্রস্তুত করা অভিযোজিত-বিটরেট ভিডিও বিজ্ঞাপন পডগুলিতে অ্যাক্সেস সরবরাহ করে যাতে সেগুলি সরাসরি ব্যবহারকারী-মুখী HLS বা MPEG-DASH মিডিয়া প্লেলিস্টে সেলাই করা যায়।
এই নির্দেশিকাটি VOD স্ট্রিমগুলির জন্য একটি মৌলিক পড সার্ভিং ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার বাস্তবায়নের উপর দৃষ্টি নিবদ্ধ করে৷
স্ট্রিম ম্যানিফেস্ট অনুরোধ গ্রহণ করুন
ভিডিও প্লেয়ার ক্লায়েন্ট অ্যাপ থেকে ম্যানিফেস্ট অনুরোধ শোনার জন্য আপনার ম্যানিফেস্ট ম্যানিপুলেটরকে অবশ্যই একটি API এন্ডপয়েন্ট প্রদান করতে হবে। ন্যূনতম, এই এন্ডপয়েন্টটিকে অবশ্যই ক্লায়েন্ট প্লেয়ার অ্যাপ থেকে একটি স্ট্রিম আইডি সংগ্রহ করতে হবে। এই স্ট্রিম আইডিটি আপনার অ্যাড পড অনুরোধে অ্যাড ম্যানেজারের কাছে স্ট্রিমিং সেশন শনাক্ত করতে ব্যবহার করা হয়।
উপযুক্ত কন্টেন্ট স্ট্রিম শনাক্ত করার জন্য আপনাকে আরও কিছু তথ্য সংগ্রহ করতে হবে, উদাহরণস্বরূপ, একটি সামগ্রী আইডি।
উদাহরণ ম্যানিফেস্ট অনুরোধ শেষ পয়েন্ট
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
পাথ প্যারামিটার | |||||
---|---|---|---|---|---|
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে অ্যাড ম্যানেজার স্ট্রিম আইডি। | ||||
content_id | আপনার সিস্টেমের কন্টেন্ট ভিডিওর সাথে সম্পর্কিত একটি অনুমানমূলক আইডি। | ||||
format | স্ট্রিম ফর্ম্যাটের সাথে সম্পর্কিত একটি অনুমানমূলক পরামিতি। যেকোনো একটি:
|
বিষয়বস্তু স্ট্রীম পুনরুদ্ধার করুন
বিজ্ঞাপনের সাথে স্টিচ করার জন্য সামগ্রী স্ট্রীম নির্বাচন করতে ম্যানিফেস্ট অনুরোধ থেকে সংগৃহীত সামগ্রী আইডি ব্যবহার করুন।
অনুরোধ বিজ্ঞাপন পড ম্যানিফেস্ট
অ্যাড ম্যানেজার থেকে বিজ্ঞাপনের জন্য অনুরোধ করতে, আপনার সার্ভারকে অনুরোধ করা এনকোডিং প্রোফাইল এবং বিজ্ঞাপন ট্যাগ পাস করে বিজ্ঞাপন পডের শেষ পয়েন্টে একটি POST অনুরোধ করতে হবে। এই অনুরোধে স্ট্রিম আইডিও অন্তর্ভুক্ত রয়েছে যা আপনি ধাপ 1 এ সংগ্রহ করেছেন।
বিনিময়ে, আপনি প্রকাশকের বিজ্ঞাপন ট্যাগ দ্বারা অনুরোধ করা বিজ্ঞাপন পডগুলির জন্য ম্যানিফেস্ট ফাইল ধারণকারী বিজ্ঞাপন পড অবজেক্টের একটি তালিকা এবং কখন এবং কোথায় সেগুলি আপনার সামগ্রীতে ঢোকানো উচিত সে সম্পর্কে তথ্য পাবেন৷
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
পাথ প্যারামিটার | |
---|---|
network_code | প্রকাশকের Ad Manager 360 নেটওয়ার্ক কোড। |
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে স্ট্রিম আইডি। |
JSON বডি
শরীরের পরামিতি | ||
---|---|---|
encoding_profiles | Required | প্রতিটি বিজ্ঞাপন বিরতির জন্য আপনি যে এনকোডিং প্রোফাইলগুলি পেতে চান তার JSON উপস্থাপনাগুলির একটি তালিকা৷ নীচে বিস্তারিত দেখুন প্লেব্যাক যতটা সম্ভব নির্বিঘ্ন করতে, এটি আপনার কন্টেন্ট স্ট্রীমে ব্যবহৃত এনকোডিং প্রোফাইলের সেটের সাথে মেলে। |
ad_tag | Required | VMAP বিজ্ঞাপনের অনুরোধ করার জন্য একটি বিজ্ঞাপন ট্যাগ। |
cuepoints | Optional | কন্টেন্ট স্ট্রীমের মধ্যে কিউ পয়েন্টগুলির একটি তালিকা যেখানে মিডরোল বিজ্ঞাপন বিরতিগুলি সন্নিবেশ করা হবে৷ কিউ পয়েন্ট ফ্লোটিং পয়েন্ট সেকেন্ডে পরিমাপ করা হয়। অবস্থানগত সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
content_duration_seconds | Optional | বিষয়বস্তুর সময়কাল সেকেন্ডে। শতাংশ সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
manifest_type | Optional | অনুরোধ করা বিজ্ঞাপন স্ট্রিমগুলির বিন্যাস, হয় hls বা dash ৷ ডিফল্ট মান হল hls । |
dai_options | Optional | ম্যানিফেস্টগুলি কীভাবে রেন্ডার করা হয় তার দিকগুলি নিয়ন্ত্রণকারী অতিরিক্ত বিকল্পগুলি৷ নীচে বিস্তারিত দেখুন |
এনকোডিং প্রোফাইল | ||
profile_name | Required | এই এনকোডিং প্রোফাইলের জন্য একটি শনাক্তকারী। এই মানটি আপনার চয়ন করা যেকোনো স্ট্রিং হতে পারে, তবে একই স্ট্রীমে একই নামের একাধিক এনকোডিং প্রোফাইল থাকতে পারে না। |
type | Required | এই এনকোডিং প্রোফাইল দ্বারা বর্ণিত স্ট্রীমের এনকোডিং প্রকার। বিষয়বস্তুর প্রকারগুলি হল: media , iframe , subtitles । |
container_type | Required | এই এনকোডিং প্রোফাইল দ্বারা ব্যবহৃত ধারক বিন্যাস। কন্টেইনার ফর্ম্যাটগুলি হল: mpeg2ts , fmp4cmaf , hls_packed_audio |
video_settings | Optional | এনকোডিং প্রোফাইল টাইপ যদি iframe হয় তাহলে প্রয়োজনীয়। অন্যথায়, শুধুমাত্র মিডিয়া টাইপ ভিডিও ধারণ করলেই অনুমোদিত। নীচে বিস্তারিত দেখুন |
audio_settings | Optional | এনকোডিং প্রোফাইলে অডিও থাকলে প্রয়োজন। টাইপ মিডিয়া হলে শুধুমাত্র অনুমোদিত. নীচে বিস্তারিত দেখুন |
subtitle_settings | Optional | এনকোডিং প্রোফাইলে সাবটাইটেল থাকলে প্রয়োজন। নীচে বিস্তারিত দেখুন |
ভিডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ ভিডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। |
frames_per_second | Required | ভিডিওর ফ্লোটিং পয়েন্ট FPS। |
resolution | Required | একটি JSON-এনকোড করা মান যাতে পিক্সেলে ভিডিও `প্রস্থ` এবং `উচ্চতা` রয়েছে। উদাহরণ: |
অডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ অডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। উদাহরণ: |
channels | Required | কম ফ্রিকোয়েন্সি চ্যানেল সহ অডিও চ্যানেলের সংখ্যা প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। |
sample_rate | Required | হার্টজে অডিও স্যাম্পলিং রেট প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। উদাহরণ: |
সাবটাইটেল সেটিংস | ||
format | Required | ইন-ব্যান্ড সাবটাইটেল দ্বারা ব্যবহৃত ফাইল বিন্যাস। সমর্থিত মান হল webvtt বা ttml . |
language | Optional | একটি RFC5646 ভাষা স্ট্রিং হিসাবে সাবটাইটেল ভাষা। প্রদান করা হলে, এই মান শুধুমাত্র DASH রেন্ডারিংয়ের জন্য ব্যবহার করা হয়। উদাহরণ: en |
DAI বিকল্প | ||
dash_profile | Optional | অ্যাড পড ম্যানিফেস্টে প্রয়োগ করার জন্য MPEG-DASH প্রোফাইল৷ এই সেটিংটি শুধুমাত্র DASH ম্যানিফেস্টের জন্য ব্যবহার করা হয়। অনুমোদিত মানগুলি live বা on-demand । ডিফল্ট মান হল on-demand । মান |
ad_pod_timeout | Optional | ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপন নির্বাচন এবং বিজ্ঞাপন পড তৈরি করতে ব্যয় করার সর্বাধিক সময়। এই সময় অতিবাহিত হওয়ার পরে, অ্যাড ম্যানেজার ad_pods প্রতিক্রিয়াতে ইতিমধ্যে নির্বাচিত যে কোনও বিজ্ঞাপন ফেরত দেয় এবং প্রক্রিয়াকরণ বন্ধ করে দেয়। |
sam_id | Optional | একটি বিকল্প ডিবাগ কী নির্দিষ্ট করে যা স্ট্রিম অ্যাক্টিভিটি মনিটরে সেশন দেখতে ব্যবহার করা যেতে পারে। |
প্রতিক্রিয়া
প্রতিক্রিয়া পরামিতি | |
---|---|
valid_for | সময়কাল যার জন্য এই বিজ্ঞাপন পড প্লেলিস্টগুলি dhms (দিন, ঘন্টা, মিনিট, সেকেন্ড) বিন্যাসে বৈধ। |
valid_until | যে তারিখ এবং সময় পর্যন্ত এই বিজ্ঞাপন পড প্লেলিস্টগুলি yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm ফর্ম্যাটে, ISO8601 তারিখের স্ট্রিং হিসাবে বৈধ। |
ad_pods | এই স্ট্রীমের জন্য নির্বাচিত বিজ্ঞাপন পডগুলির একটি তালিকা৷ |
বিজ্ঞাপন পড | |
manifest_uris | শুধুমাত্র HLS স্ট্রিমগুলির জন্য। HLS ম্যানিফেস্ট URI-তে প্রোফাইল আইডি এনকোড করার একটি মানচিত্র। |
mpd_uri | শুধুমাত্র DASH স্ট্রীমের জন্য। DASH MPD-এর URI। |
type | বিজ্ঞাপন পডের ধরন। বিজ্ঞাপন পডের প্রকারগুলি হল: pre , mid বা post । |
start | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. স্ট্রীমের অবস্থান যেখানে এই বিজ্ঞাপন পডটি ঢোকানো উচিত, ফ্লোটিং পয়েন্ট সেকেন্ডে। |
duration | ফ্লোটিং পয়েন্ট সেকেন্ডে এই বিজ্ঞাপন পডের সময়কাল। |
midroll_index | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. বর্তমান মিড-রোল বিজ্ঞাপন পডের সূচক। সূচীকরণ 1 দিয়ে শুরু হয়। |
উদাহরণ অনুরোধ (cURL)
curl -X POST \
-d '@request-body.json' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/streams/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/adpods
উদাহরণ অনুরোধ বডি
এটি হল request-body.json
এর বিষয়বস্তু যা উপরের সিআরএল কলে উল্লেখ করা হয়েছে।
{
"encoding_profiles": [
{
"profile_name": "1080p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000c",
"bitrate": 5000000,
"frames_per_second": 30.0,
"resolution": {
"width": 1920,
"height": 1080
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 300000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "360p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000d",
"bitrate": 1000000,
"frames_per_second": 30.0,
"resolution": {
"width": 640,
"height": 360
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 64000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "subtitles-webvtt",
"type": "subtitles",
"subtitle_settings": {
"format": "webvtt"
}
}
],
"ad_tag": "https://pubads.g.doubleclick.net/gampad/ads?...",
"manifest_type": "hls"
}
উদাহরণ প্রতিক্রিয়া
{
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00",
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/1/profile/subtitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
]"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt""
},
"type": "post",
"duration": 10.0
}
]
}
বিষয়বস্তু মধ্যে বিজ্ঞাপন পড সেলাই
আপনার বিষয়বস্তু স্ট্রীমগুলিতে বিজ্ঞাপন পড সেলাই করার প্রক্রিয়া আপনার বাস্তবায়ন, স্ট্রিম বিন্যাস এবং আপনি বিন্যাসের নির্দিষ্টকরণ থেকে প্রয়োগ করতে বেছে নেওয়া বৈশিষ্ট্যগুলির উপর নির্ভর করে পরিবর্তিত হয়। নিম্নলিখিত কর্মপ্রবাহগুলি এই প্রক্রিয়াটি কীভাবে পরিচালনা করতে হয় তার পরামর্শ। আপনার ব্যবসার প্রয়োজন এবং আপনার বিষয়বস্তু স্ট্রীমের উপর ভিত্তি করে আপনার বাস্তবায়নের সুনির্দিষ্ট বিবরণ পরিবর্তিত হতে পারে।
HLS স্ট্রীম
আপনি যদি HLS ফর্ম্যাটে একটি স্ট্রীম সেলাই করেন, তাহলে আপনার সামগ্রী স্ট্রীমটি প্রতিটি এনকোডিং প্রোফাইলের জন্য পৃথক স্ট্রিম ম্যানিফেস্টের লিঙ্কগুলির একটি মাল্টিভেরিয়েন্ট প্লেলিস্ট হবে৷ আপনার বিজ্ঞাপন পডগুলিকে এই বৈকল্পিক ম্যানিফেস্টগুলির প্রতিটিতে ঢোকানো দরকার৷ এটি করার একটি উপায় হল সমস্ত ভেরিয়েন্ট ম্যানিফেস্ট প্রস্তুত করা এবং হোস্টিং এর জন্য একটি বিষয়বস্তু বিতরণ নেটওয়ার্ক (CDN) এ প্রেরণ করা। চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্ট হল এই CDN-হোস্ট করা ম্যানিফেস্টগুলির লিঙ্কগুলির একটি সেট৷
এনকোডিং প্রোফাইলের উপর পুনরাবৃত্তি করুন
প্রতিটি এনকোডিং প্রোফাইলের জন্য, অ্যাড ম্যানেজারের প্রতিক্রিয়া থেকে সংশ্লিষ্ট সমস্ত বিজ্ঞাপন পড মেনিফেস্ট সংগ্রহ করুন, তাদের সংশ্লিষ্ট শুরুর সময় সহ। প্রি-রোল বিজ্ঞাপন পডের জন্য, শুরুর সময় 0
এ সেট করুন। পোস্ট-রোলগুলির জন্য, বিজ্ঞাপন পডের শুরুর সময় হিসাবে সামগ্রীর সময়কাল ব্যবহার করুন৷ প্রতিটি এনকোডিং প্রোফাইলের অডিও এবং ভিডিও সেটিংসের সাথে মেলে মাল্টিভেরিয়েন্ট প্লেলিস্টে বৈকল্পিক স্ট্রীম সনাক্ত করুন৷
উদাহরণ বিজ্ঞাপন পড অ্যারে
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/0/profile/subitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/1/profile/subitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/2/profile/subitles-en.vtt"
},
"type": "post",
"duration": 10.0
}
]
মাল্টিভেরিয়েন্ট কন্টেন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://{...}/subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://{...}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://{...}/360p.m3u8
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Profile settings: {...}
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://{...}/pod/0/profile/1080p.m3u8
15 -> https://{...}/pod/1/profile/1080p.m3u8
600 -> https://{...}/pod/2/profile/1080p.m3u8
প্রতিটি বৈকল্পিক ম্যানিফেস্টে বিজ্ঞাপন সন্নিবেশ করান
প্রতিটি বৈকল্পিক স্ট্রীমের জন্য, সামগ্রী ম্যানিফেস্টের সেগমেন্টগুলির মধ্য দিয়ে যান, একটি চলমান সামগ্রীর মোট সময় অতিবাহিত করুন৷ যখন আপনি একটি বিজ্ঞাপন পডের শুরুর অবস্থানে আসেন, তখন বিজ্ঞাপন পডের ম্যানিফেস্ট থেকে সেগমেন্টের তালিকা বের করুন, দুটি #EXT-X-DISCONTINUITY
ট্যাগে সেগমেন্টের তালিকা মুড়ে দিন এবং সামগ্রী ম্যানিফেস্টে বর্তমান অবস্থানে তালিকাটি সন্নিবেশ করুন . সমস্ত বিজ্ঞাপন পড এবং ভেরিয়েন্ট স্ট্রীম প্রক্রিয়া না হওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান।
ফলস্বরূপ ম্যানিফেস্টগুলি অবশ্যই এইচএলএস স্ট্যান্ডার্ডের সাথে সঙ্গতিপূর্ণ হবে। অতএব, আপনার বিষয়বস্তু ম্যানিফেস্টের স্পেসিফিকেশনের কোন বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করে তার উপর নির্ভর করে, মিডিয়া সিকোয়েন্স নম্বর, বিষয়বস্তুর সময়কাল, বিচ্ছিন্নতা ক্রম নম্বর এবং অন্য কোনও ট্যাগ যা আপডেট করতে হবে তা ঠিক করার জন্য আপনাকে সম্মিলিত ম্যানিফেস্টের উপর একটি চূড়ান্ত পাস করতে হতে পারে। অ্যাকাউন্টে নতুন বিজ্ঞাপন বিভাগ। স্ট্যান্ডার্ডের সাথে কোনো অসঙ্গতি মেরামত হয়ে গেলে, হোস্টিংয়ের জন্য প্রতিটি ব্যবহারকারী-নির্দিষ্ট বৈকল্পিক ম্যানিফেস্টকে আপনার CDN-এ পুশ করুন।
আপনার বিষয়বস্তু ম্যানিফেস্ট এনক্রিপ্ট করা থাকলে, বর্তমান বিজ্ঞাপন পড শুরুর আগে পাওয়া শেষ এনক্রিপশন কীটি একটি #EXT-X-KEY
ট্যাগে সংরক্ষণ করতে হবে। তারপর, প্রতিটি বিজ্ঞাপন পডের প্রথম অংশের আগে এনক্রিপশন সরাতে আপনাকে #EXT-X-KEY:METHOD=NONE
ট্যাগ যোগ করতে হবে। পরিশেষে, কন্টেন্ট এনক্রিপশন পুনরুদ্ধার করতে আপনাকে অবশ্যই প্রতিটি বিজ্ঞাপন পডের পরে সামগ্রীর প্রথম অংশের আগে সঞ্চিত #EXT-X-KEY
ট্যাগের একটি অনুলিপি যোগ করতে হবে।
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://dai.google.com/{...}pod/0/profile/1080p.m3u8
15 -> https://dai.google.com/{...}pod/1/profile/1080p.m3u8
600 -> https://dai.google.com/{...}pod/2/profile/1080p.m3u8
উদাহরণ কন্টেন্ট ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://{...}/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
উদাহরণ বিজ্ঞাপন পড ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
সেলাই করা বৈকল্পিক ম্যানিফেস্টের উদাহরণ
এটি ফলস্বরূপ সেলাই করা ভেরিয়েন্ট ম্যানিফেস্ট হবে, যা CDN-এ পাস করা হবে এবং https://cdn.{...}/{userid}/1080p.m3u8
।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
মাল্টিভেরিয়েন্ট প্লেলিস্ট তৈরি করুন
প্রতিটি সম্পূর্ণ ভেরিয়েন্ট ম্যানিফেস্টের জন্য CDN ঠিকানা সংগ্রহ করুন, সাথে মিলে যাওয়া এনকোডিং প্রোফাইলের বিবরণ সহ, এবং ফলাফলগুলিকে একটি নতুন মাল্টিভেরিয়েন্ট ম্যানিফেস্টে একত্র করুন। এই ব্যবহারকারী-নির্দিষ্ট ম্যানিফেস্টটি ম্যানিফেস্ট অনুরোধের প্রতিক্রিয়া হিসাবে ফেরত দেওয়া হয়েছে যা আপনি ধাপ 1 এ পেয়েছেন।
চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://cdn.{...}-subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://cdn.{...}/{userid}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://cdn.{...}/{userid}/360p.m3u8
MPEG DASH স্ট্রীম
আপনি যদি MPEG DASH ফরম্যাটে একটি স্ট্রিম সেলাই করছেন, তাহলে আপনাকে শুধুমাত্র একটি ফাইল তৈরি করতে হবে। এটি DASH স্ট্রীমগুলিকে HLS এর চেয়ে সহজে সেলাই করতে পারে৷
একটি সঠিকভাবে প্রস্তুত MPEG DASH মিডিয়া প্রেজেন্টেশন বর্ণনা (MPD) ফাইলে বেশ কয়েকটি পিরিয়ড থাকা উচিত, প্রতিটিতে একাধিক উপস্থাপনা থাকে। প্রতিটি উপস্থাপনা আপনার এনকোডিং প্রোফাইলগুলির একটির সাথে মেলে। অ্যাড ম্যানেজার থেকে প্রত্যাবর্তিত প্রতিটি বিজ্ঞাপন পডও একটি MPD ফাইল যাতে সামঞ্জস্যপূর্ণ উপস্থাপনা সহ পিরিয়ডের একটি ক্রম থাকে।
এই MPD ফাইলগুলিকে একসাথে সেলাই করতে, প্রতিটি বিজ্ঞাপন পডের শুরুর সময় নোট করে শুরু করুন৷ প্রি-রোলের জন্য, যেকোনো বিষয়বস্তুর সময়ের আগে প্রি-রোল অ্যাড পড পিরিয়ড ঢোকান। পোস্ট-রোলগুলির জন্য, সমস্ত বিষয়বস্তুর সময়সীমার পরে পোস্টরোল বিজ্ঞাপন পড পিরিয়ডগুলি সন্নিবেশ করুন৷ সমস্ত প্রক্রিয়াকৃত বিষয়বস্তুর সময়কালের জন্য অতিবাহিত খেলার সময় ট্র্যাক করে, সামগ্রী MPD-এ পিরিয়ডের উপর পুনরাবৃত্তি করুন। আপনি যখন বিজ্ঞাপন পডের শুরুর সময়ের সাথে সামঞ্জস্যপূর্ণ সময়ের মধ্যে একটি সীমানায় পৌঁছে যান, তখন সেই সীমানায় মিলিত মিড-রোল অ্যাড পডের MPD ফাইল থেকে পিরিয়ডগুলি সন্নিবেশ করুন৷
চূড়ান্ত সেলাই করা MPD ফাইলটি অবশ্যই MPEG_DASH স্পেসিফিকেশনের সাথে সম্পূর্ণরূপে সঙ্গতিপূর্ণ হতে হবে, তাই আপনাকে যেকোন পিরিয়ডের শুরুর সময় সংশোধন করতে, নতুন সন্নিবেশিত বিজ্ঞাপনের সময়কালের জন্য মিডিয়া উপস্থাপনার সময়কাল ঠিক করতে এবং অন্য যেকোনও সমাধান করতে হতে পারে চূড়ান্ত ফাইলটির উপর আরেকবার পুনরাবৃত্তি করতে হবে। দ্বন্দ্ব যা সেলাই প্রক্রিয়া থেকে উদ্ভূত হতে পারে.
উদাহরণ কন্টেন্ট MPD
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M00.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
উদাহরণ বিজ্ঞাপন পড JSON
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
উদাহরণ বিজ্ঞাপন পড MPD
এটি উপরের বিজ্ঞাপন পড JSON থেকে mpd_uri
এর বিষয়বস্তু।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Ad Pod 1</Title>
</ProgramInformation>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
...
</MPD>
সেলাই করা MPD উদাহরণ
প্রাথমিক স্ট্রিম ম্যানিফেস্ট অনুরোধে আপনার প্রতিক্রিয়া হিসাবে এটি পরিবেশন করুন।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
অতিরিক্ত সম্পদ
- IMA SDK-এর সাথে পড সার্ভিং প্লেব্যাক:
- DAI API এর সাথে পড সার্ভিং প্লেব্যাক
পড সার্ভিং এপিআই এমনভাবে প্রস্তুত করা অভিযোজিত-বিটরেট ভিডিও বিজ্ঞাপন পডগুলিতে অ্যাক্সেস সরবরাহ করে যাতে সেগুলি সরাসরি ব্যবহারকারী-মুখী HLS বা MPEG-DASH মিডিয়া প্লেলিস্টে সেলাই করা যায়।
এই নির্দেশিকাটি VOD স্ট্রিমগুলির জন্য একটি মৌলিক পড সার্ভিং ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার বাস্তবায়নের উপর দৃষ্টি নিবদ্ধ করে৷
স্ট্রিম ম্যানিফেস্ট অনুরোধ গ্রহণ করুন
ভিডিও প্লেয়ার ক্লায়েন্ট অ্যাপ থেকে ম্যানিফেস্ট অনুরোধ শোনার জন্য আপনার ম্যানিফেস্ট ম্যানিপুলেটরকে অবশ্যই একটি API এন্ডপয়েন্ট প্রদান করতে হবে। ন্যূনতম, এই এন্ডপয়েন্টটিকে অবশ্যই ক্লায়েন্ট প্লেয়ার অ্যাপ থেকে একটি স্ট্রিম আইডি সংগ্রহ করতে হবে। এই স্ট্রিম আইডিটি আপনার অ্যাড পড অনুরোধে অ্যাড ম্যানেজারের কাছে স্ট্রিমিং সেশন শনাক্ত করতে ব্যবহার করা হয়।
উপযুক্ত কন্টেন্ট স্ট্রিম শনাক্ত করার জন্য আপনাকে আরও কিছু তথ্য সংগ্রহ করতে হবে, উদাহরণস্বরূপ, একটি সামগ্রী আইডি।
উদাহরণ ম্যানিফেস্ট অনুরোধ শেষ পয়েন্ট
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
পাথ প্যারামিটার | |||||
---|---|---|---|---|---|
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে অ্যাড ম্যানেজার স্ট্রিম আইডি। | ||||
content_id | আপনার সিস্টেমের কন্টেন্ট ভিডিওর সাথে সম্পর্কিত একটি অনুমানমূলক আইডি। | ||||
format | স্ট্রিম ফর্ম্যাটের সাথে সম্পর্কিত একটি অনুমানমূলক পরামিতি। যেকোনো একটি:
|
বিষয়বস্তু স্ট্রীম পুনরুদ্ধার করুন
বিজ্ঞাপনের সাথে স্টিচ করার জন্য সামগ্রী স্ট্রীম নির্বাচন করতে ম্যানিফেস্ট অনুরোধ থেকে সংগৃহীত সামগ্রী আইডি ব্যবহার করুন।
অনুরোধ বিজ্ঞাপন পড ম্যানিফেস্ট
অ্যাড ম্যানেজার থেকে বিজ্ঞাপনের জন্য অনুরোধ করতে, আপনার সার্ভারকে অনুরোধ করা এনকোডিং প্রোফাইল এবং বিজ্ঞাপন ট্যাগ পাস করে বিজ্ঞাপন পডের শেষ পয়েন্টে একটি POST অনুরোধ করতে হবে। এই অনুরোধে স্ট্রিম আইডিও অন্তর্ভুক্ত রয়েছে যা আপনি ধাপ 1 এ সংগ্রহ করেছেন।
বিনিময়ে, আপনি প্রকাশকের বিজ্ঞাপন ট্যাগ দ্বারা অনুরোধ করা বিজ্ঞাপন পডগুলির জন্য ম্যানিফেস্ট ফাইল ধারণকারী বিজ্ঞাপন পড অবজেক্টের একটি তালিকা এবং কখন এবং কোথায় সেগুলি আপনার সামগ্রীতে ঢোকানো উচিত সে সম্পর্কে তথ্য পাবেন৷
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
পাথ প্যারামিটার | |
---|---|
network_code | প্রকাশকের Ad Manager 360 নেটওয়ার্ক কোড। |
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে স্ট্রিম আইডি। |
JSON বডি
শরীরের পরামিতি | ||
---|---|---|
encoding_profiles | Required | প্রতিটি বিজ্ঞাপন বিরতির জন্য আপনি যে এনকোডিং প্রোফাইলগুলি পেতে চান তার JSON উপস্থাপনাগুলির একটি তালিকা৷ নীচে বিস্তারিত দেখুন প্লেব্যাক যতটা সম্ভব নির্বিঘ্ন করতে, এটি আপনার কন্টেন্ট স্ট্রীমে ব্যবহৃত এনকোডিং প্রোফাইলের সেটের সাথে মেলে। |
ad_tag | Required | VMAP বিজ্ঞাপনের অনুরোধ করার জন্য একটি বিজ্ঞাপন ট্যাগ। |
cuepoints | Optional | কন্টেন্ট স্ট্রীমের মধ্যে কিউ পয়েন্টগুলির একটি তালিকা যেখানে মিডরোল বিজ্ঞাপন বিরতিগুলি সন্নিবেশ করা হবে৷ কিউ পয়েন্ট ফ্লোটিং পয়েন্ট সেকেন্ডে পরিমাপ করা হয়। অবস্থানগত সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
content_duration_seconds | Optional | বিষয়বস্তুর সময়কাল সেকেন্ডে। শতাংশ সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
manifest_type | Optional | অনুরোধ করা বিজ্ঞাপন স্ট্রিমগুলির বিন্যাস, হয় hls বা dash ৷ ডিফল্ট মান হল hls । |
dai_options | Optional | ম্যানিফেস্টগুলি কীভাবে রেন্ডার করা হয় তার দিকগুলি নিয়ন্ত্রণকারী অতিরিক্ত বিকল্পগুলি৷ নীচে বিস্তারিত দেখুন |
এনকোডিং প্রোফাইল | ||
profile_name | Required | এই এনকোডিং প্রোফাইলের জন্য একটি শনাক্তকারী। এই মানটি আপনার চয়ন করা যেকোনো স্ট্রিং হতে পারে, তবে একই স্ট্রীমে একই নামের একাধিক এনকোডিং প্রোফাইল থাকতে পারে না। |
type | Required | এই এনকোডিং প্রোফাইল দ্বারা বর্ণিত স্ট্রীমের এনকোডিং প্রকার। বিষয়বস্তুর প্রকারগুলি হল: media , iframe , subtitles । |
container_type | Required | এই এনকোডিং প্রোফাইল দ্বারা ব্যবহৃত ধারক বিন্যাস। কন্টেইনার ফর্ম্যাটগুলি হল: mpeg2ts , fmp4cmaf , hls_packed_audio |
video_settings | Optional | এনকোডিং প্রোফাইল টাইপ যদি iframe হয় তাহলে প্রয়োজনীয়। অন্যথায়, শুধুমাত্র মিডিয়া টাইপ ভিডিও ধারণ করলেই অনুমোদিত। নীচে বিস্তারিত দেখুন |
audio_settings | Optional | এনকোডিং প্রোফাইলে অডিও থাকলে প্রয়োজন। টাইপ মিডিয়া হলে শুধুমাত্র অনুমোদিত. নীচে বিস্তারিত দেখুন |
subtitle_settings | Optional | এনকোডিং প্রোফাইলে সাবটাইটেল থাকলে প্রয়োজন। নীচে বিস্তারিত দেখুন |
ভিডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ ভিডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। |
frames_per_second | Required | ভিডিওর ফ্লোটিং পয়েন্ট FPS। |
resolution | Required | একটি JSON-এনকোড করা মান যাতে পিক্সেলে ভিডিও `প্রস্থ` এবং `উচ্চতা` রয়েছে। উদাহরণ: |
অডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ অডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। উদাহরণ: |
channels | Required | কম ফ্রিকোয়েন্সি চ্যানেল সহ অডিও চ্যানেলের সংখ্যা প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। |
sample_rate | Required | হার্টজে অডিও স্যাম্পলিং রেট প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। উদাহরণ: |
সাবটাইটেল সেটিংস | ||
format | Required | ইন-ব্যান্ড সাবটাইটেল দ্বারা ব্যবহৃত ফাইল বিন্যাস। সমর্থিত মান হল webvtt বা ttml . |
language | Optional | একটি RFC5646 ভাষা স্ট্রিং হিসাবে সাবটাইটেল ভাষা। প্রদান করা হলে, এই মান শুধুমাত্র DASH রেন্ডারিংয়ের জন্য ব্যবহার করা হয়। উদাহরণ: en |
DAI বিকল্প | ||
dash_profile | Optional | অ্যাড পড ম্যানিফেস্টে প্রয়োগ করার জন্য MPEG-DASH প্রোফাইল৷ এই সেটিংটি শুধুমাত্র DASH ম্যানিফেস্টের জন্য ব্যবহার করা হয়। অনুমোদিত মানগুলি live বা on-demand । ডিফল্ট মান হল on-demand । মান |
ad_pod_timeout | Optional | ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপন নির্বাচন এবং বিজ্ঞাপন পড তৈরি করতে ব্যয় করার সর্বাধিক সময়। এই সময় অতিবাহিত হওয়ার পরে, অ্যাড ম্যানেজার ad_pods প্রতিক্রিয়াতে ইতিমধ্যে নির্বাচিত যে কোনও বিজ্ঞাপন ফেরত দেয় এবং প্রক্রিয়াকরণ বন্ধ করে দেয়। |
sam_id | Optional | একটি বিকল্প ডিবাগ কী নির্দিষ্ট করে যা স্ট্রিম অ্যাক্টিভিটি মনিটরে সেশন দেখতে ব্যবহার করা যেতে পারে। |
প্রতিক্রিয়া
প্রতিক্রিয়া পরামিতি | |
---|---|
valid_for | সময়কাল যার জন্য এই বিজ্ঞাপন পড প্লেলিস্টগুলি dhms (দিন, ঘন্টা, মিনিট, সেকেন্ড) বিন্যাসে বৈধ। |
valid_until | যে তারিখ এবং সময় পর্যন্ত এই বিজ্ঞাপন পড প্লেলিস্টগুলি yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm ফর্ম্যাটে, ISO8601 তারিখের স্ট্রিং হিসাবে বৈধ। |
ad_pods | এই স্ট্রীমের জন্য নির্বাচিত বিজ্ঞাপন পডগুলির একটি তালিকা৷ |
বিজ্ঞাপন পড | |
manifest_uris | শুধুমাত্র HLS স্ট্রিমগুলির জন্য। HLS ম্যানিফেস্ট URI-তে প্রোফাইল আইডি এনকোড করার একটি মানচিত্র। |
mpd_uri | শুধুমাত্র DASH স্ট্রীমের জন্য। DASH MPD-এর URI। |
type | বিজ্ঞাপন পডের ধরন। বিজ্ঞাপন পডের প্রকারগুলি হল: pre , mid বা post । |
start | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. স্ট্রীমের অবস্থান যেখানে এই বিজ্ঞাপন পডটি ঢোকানো উচিত, ফ্লোটিং পয়েন্ট সেকেন্ডে। |
duration | ফ্লোটিং পয়েন্ট সেকেন্ডে এই বিজ্ঞাপন পডের সময়কাল। |
midroll_index | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. বর্তমান মিড-রোল বিজ্ঞাপন পডের সূচক। সূচীকরণ 1 দিয়ে শুরু হয়। |
উদাহরণ অনুরোধ (cURL)
curl -X POST \
-d '@request-body.json' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/streams/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/adpods
উদাহরণ অনুরোধ বডি
এটি হল request-body.json
এর বিষয়বস্তু যা উপরের সিআরএল কলে উল্লেখ করা হয়েছে।
{
"encoding_profiles": [
{
"profile_name": "1080p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000c",
"bitrate": 5000000,
"frames_per_second": 30.0,
"resolution": {
"width": 1920,
"height": 1080
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 300000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "360p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000d",
"bitrate": 1000000,
"frames_per_second": 30.0,
"resolution": {
"width": 640,
"height": 360
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 64000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "subtitles-webvtt",
"type": "subtitles",
"subtitle_settings": {
"format": "webvtt"
}
}
],
"ad_tag": "https://pubads.g.doubleclick.net/gampad/ads?...",
"manifest_type": "hls"
}
উদাহরণ প্রতিক্রিয়া
{
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00",
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/1/profile/subtitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
]"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt""
},
"type": "post",
"duration": 10.0
}
]
}
বিষয়বস্তু মধ্যে বিজ্ঞাপন পড সেলাই
আপনার বিষয়বস্তু স্ট্রীমগুলিতে বিজ্ঞাপন পড সেলাই করার প্রক্রিয়া আপনার বাস্তবায়ন, স্ট্রিম বিন্যাস এবং আপনি বিন্যাসের নির্দিষ্টকরণ থেকে প্রয়োগ করতে বেছে নেওয়া বৈশিষ্ট্যগুলির উপর নির্ভর করে পরিবর্তিত হয়। নিম্নলিখিত কর্মপ্রবাহগুলি এই প্রক্রিয়াটি কীভাবে পরিচালনা করতে হয় তার পরামর্শ। আপনার ব্যবসার প্রয়োজন এবং আপনার বিষয়বস্তু স্ট্রীমের উপর ভিত্তি করে আপনার বাস্তবায়নের সুনির্দিষ্ট বিবরণ পরিবর্তিত হতে পারে।
HLS স্ট্রীম
আপনি যদি HLS ফর্ম্যাটে একটি স্ট্রীম সেলাই করেন, তাহলে আপনার সামগ্রী স্ট্রীমটি প্রতিটি এনকোডিং প্রোফাইলের জন্য পৃথক স্ট্রিম ম্যানিফেস্টের লিঙ্কগুলির একটি মাল্টিভেরিয়েন্ট প্লেলিস্ট হবে৷ আপনার বিজ্ঞাপন পডগুলিকে এই বৈকল্পিক ম্যানিফেস্টগুলির প্রতিটিতে ঢোকানো দরকার৷ এটি করার একটি উপায় হল সমস্ত ভেরিয়েন্ট ম্যানিফেস্ট প্রস্তুত করা এবং হোস্টিং এর জন্য একটি বিষয়বস্তু বিতরণ নেটওয়ার্ক (CDN) এ প্রেরণ করা। চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্ট হল এই CDN-হোস্ট করা ম্যানিফেস্টগুলির লিঙ্কগুলির একটি সেট৷
এনকোডিং প্রোফাইলের উপর পুনরাবৃত্তি করুন
প্রতিটি এনকোডিং প্রোফাইলের জন্য, অ্যাড ম্যানেজারের প্রতিক্রিয়া থেকে সংশ্লিষ্ট সমস্ত বিজ্ঞাপন পড মেনিফেস্ট সংগ্রহ করুন, তাদের সংশ্লিষ্ট শুরুর সময় সহ। প্রি-রোল বিজ্ঞাপন পডের জন্য, শুরুর সময় 0
এ সেট করুন। পোস্ট-রোলগুলির জন্য, বিজ্ঞাপন পডের শুরুর সময় হিসাবে সামগ্রীর সময়কাল ব্যবহার করুন৷ প্রতিটি এনকোডিং প্রোফাইলের অডিও এবং ভিডিও সেটিংসের সাথে মেলে মাল্টিভেরিয়েন্ট প্লেলিস্টে বৈকল্পিক স্ট্রীম সনাক্ত করুন৷
উদাহরণ বিজ্ঞাপন পড অ্যারে
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/0/profile/subitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/1/profile/subitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/2/profile/subitles-en.vtt"
},
"type": "post",
"duration": 10.0
}
]
মাল্টিভেরিয়েন্ট কন্টেন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://{...}/subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://{...}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://{...}/360p.m3u8
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Profile settings: {...}
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://{...}/pod/0/profile/1080p.m3u8
15 -> https://{...}/pod/1/profile/1080p.m3u8
600 -> https://{...}/pod/2/profile/1080p.m3u8
প্রতিটি বৈকল্পিক ম্যানিফেস্টে বিজ্ঞাপন সন্নিবেশ করান
প্রতিটি বৈকল্পিক স্ট্রীমের জন্য, সামগ্রী ম্যানিফেস্টের সেগমেন্টগুলির মধ্য দিয়ে যান, একটি চলমান সামগ্রীর মোট সময় অতিবাহিত করুন৷ যখন আপনি একটি বিজ্ঞাপন পডের শুরুর অবস্থানে আসেন, তখন বিজ্ঞাপন পডের ম্যানিফেস্ট থেকে সেগমেন্টের তালিকা বের করুন, দুটি #EXT-X-DISCONTINUITY
ট্যাগে সেগমেন্টের তালিকা মুড়ে দিন এবং সামগ্রী ম্যানিফেস্টে বর্তমান অবস্থানে তালিকাটি সন্নিবেশ করুন . সমস্ত বিজ্ঞাপন পড এবং ভেরিয়েন্ট স্ট্রীম প্রক্রিয়া না হওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান।
ফলস্বরূপ ম্যানিফেস্টগুলি অবশ্যই এইচএলএস স্ট্যান্ডার্ডের সাথে সঙ্গতিপূর্ণ হবে। অতএব, আপনার বিষয়বস্তু ম্যানিফেস্টের স্পেসিফিকেশনের কোন বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করে তার উপর নির্ভর করে, মিডিয়া সিকোয়েন্স নম্বর, বিষয়বস্তুর সময়কাল, বিচ্ছিন্নতা ক্রম নম্বর এবং অন্য কোনও ট্যাগ যা আপডেট করতে হবে তা ঠিক করার জন্য আপনাকে সম্মিলিত ম্যানিফেস্টের উপর একটি চূড়ান্ত পাস করতে হতে পারে। অ্যাকাউন্টে নতুন বিজ্ঞাপন বিভাগ। স্ট্যান্ডার্ডের সাথে কোনো অসঙ্গতি মেরামত হয়ে গেলে, হোস্টিংয়ের জন্য প্রতিটি ব্যবহারকারী-নির্দিষ্ট বৈকল্পিক ম্যানিফেস্টকে আপনার CDN-এ পুশ করুন।
আপনার বিষয়বস্তু ম্যানিফেস্ট এনক্রিপ্ট করা থাকলে, বর্তমান বিজ্ঞাপন পড শুরুর আগে পাওয়া শেষ এনক্রিপশন কীটি একটি #EXT-X-KEY
ট্যাগে সংরক্ষণ করতে হবে। তারপর, প্রতিটি বিজ্ঞাপন পডের প্রথম অংশের আগে এনক্রিপশন সরাতে আপনাকে #EXT-X-KEY:METHOD=NONE
ট্যাগ যোগ করতে হবে। পরিশেষে, কন্টেন্ট এনক্রিপশন পুনরুদ্ধার করতে আপনাকে অবশ্যই প্রতিটি বিজ্ঞাপন পডের পরে সামগ্রীর প্রথম অংশের আগে সঞ্চিত #EXT-X-KEY
ট্যাগের একটি অনুলিপি যোগ করতে হবে।
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://dai.google.com/{...}pod/0/profile/1080p.m3u8
15 -> https://dai.google.com/{...}pod/1/profile/1080p.m3u8
600 -> https://dai.google.com/{...}pod/2/profile/1080p.m3u8
উদাহরণ কন্টেন্ট ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://{...}/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
উদাহরণ বিজ্ঞাপন পড ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
সেলাই করা বৈকল্পিক ম্যানিফেস্টের উদাহরণ
এটি ফলস্বরূপ সেলাই করা ভেরিয়েন্ট ম্যানিফেস্ট হবে, যা CDN-এ পাস করা হবে এবং https://cdn.{...}/{userid}/1080p.m3u8
।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
মাল্টিভেরিয়েন্ট প্লেলিস্ট তৈরি করুন
প্রতিটি সম্পূর্ণ ভেরিয়েন্ট ম্যানিফেস্টের জন্য CDN ঠিকানা সংগ্রহ করুন, সাথে মিলে যাওয়া এনকোডিং প্রোফাইলের বিবরণ সহ, এবং ফলাফলগুলিকে একটি নতুন মাল্টিভেরিয়েন্ট ম্যানিফেস্টে একত্র করুন। এই ব্যবহারকারী-নির্দিষ্ট ম্যানিফেস্টটি ম্যানিফেস্ট অনুরোধের প্রতিক্রিয়া হিসাবে ফেরত দেওয়া হয়েছে যা আপনি ধাপ 1 এ পেয়েছেন।
চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://cdn.{...}-subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://cdn.{...}/{userid}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://cdn.{...}/{userid}/360p.m3u8
MPEG DASH স্ট্রীম
আপনি যদি MPEG DASH ফরম্যাটে একটি স্ট্রিম সেলাই করছেন, তাহলে আপনাকে শুধুমাত্র একটি ফাইল তৈরি করতে হবে। এটি DASH স্ট্রীমগুলিকে HLS এর চেয়ে সহজে সেলাই করতে পারে৷
একটি সঠিকভাবে প্রস্তুত MPEG DASH মিডিয়া প্রেজেন্টেশন বর্ণনা (MPD) ফাইলে বেশ কয়েকটি পিরিয়ড থাকা উচিত, প্রতিটিতে একাধিক উপস্থাপনা থাকে। প্রতিটি উপস্থাপনা আপনার এনকোডিং প্রোফাইলগুলির একটির সাথে মেলে। অ্যাড ম্যানেজার থেকে প্রত্যাবর্তিত প্রতিটি বিজ্ঞাপন পডও একটি MPD ফাইল যাতে সামঞ্জস্যপূর্ণ উপস্থাপনা সহ পিরিয়ডের একটি ক্রম থাকে।
এই MPD ফাইলগুলিকে একসাথে সেলাই করতে, প্রতিটি বিজ্ঞাপন পডের শুরুর সময় নোট করে শুরু করুন৷ প্রি-রোলের জন্য, যেকোনো বিষয়বস্তুর সময়ের আগে প্রি-রোল অ্যাড পড পিরিয়ড ঢোকান। পোস্ট-রোলগুলির জন্য, সমস্ত বিষয়বস্তুর সময়সীমার পরে পোস্টরোল বিজ্ঞাপন পড পিরিয়ডগুলি সন্নিবেশ করুন৷ সমস্ত প্রক্রিয়াকৃত বিষয়বস্তুর সময়কালের জন্য অতিবাহিত খেলার সময় ট্র্যাক করে, সামগ্রী MPD-এ পিরিয়ডের উপর পুনরাবৃত্তি করুন। আপনি যখন বিজ্ঞাপন পডের শুরুর সময়ের সাথে সামঞ্জস্যপূর্ণ সময়ের মধ্যে একটি সীমানায় পৌঁছে যান, তখন সেই সীমানায় মিলিত মিড-রোল অ্যাড পডের MPD ফাইল থেকে পিরিয়ডগুলি সন্নিবেশ করুন৷
চূড়ান্ত সেলাই করা MPD ফাইলটি অবশ্যই MPEG_DASH স্পেসিফিকেশনের সাথে সম্পূর্ণরূপে সঙ্গতিপূর্ণ হতে হবে, তাই আপনাকে যেকোন পিরিয়ডের শুরুর সময় সংশোধন করতে, নতুন সন্নিবেশিত বিজ্ঞাপনের সময়কালের জন্য মিডিয়া উপস্থাপনার সময়কাল ঠিক করতে এবং অন্য যেকোনও সমাধান করতে হতে পারে চূড়ান্ত ফাইলটির উপর আরেকবার পুনরাবৃত্তি করতে হবে। দ্বন্দ্ব যা সেলাই প্রক্রিয়া থেকে উদ্ভূত হতে পারে.
উদাহরণ কন্টেন্ট MPD
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M00.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
উদাহরণ বিজ্ঞাপন পড JSON
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
উদাহরণ বিজ্ঞাপন পড MPD
এটি উপরের বিজ্ঞাপন পড JSON থেকে mpd_uri
এর বিষয়বস্তু।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Ad Pod 1</Title>
</ProgramInformation>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
...
</MPD>
সেলাই করা MPD উদাহরণ
প্রাথমিক স্ট্রিম ম্যানিফেস্ট অনুরোধে আপনার প্রতিক্রিয়া হিসাবে এটি পরিবেশন করুন।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
অতিরিক্ত সম্পদ
- IMA SDK-এর সাথে পড সার্ভিং প্লেব্যাক:
- DAI API এর সাথে পড সার্ভিং প্লেব্যাক
পড সার্ভিং এপিআই এমনভাবে প্রস্তুত করা অভিযোজিত-বিটরেট ভিডিও বিজ্ঞাপন পডগুলিতে অ্যাক্সেস সরবরাহ করে যাতে সেগুলি সরাসরি ব্যবহারকারী-মুখী HLS বা MPEG-DASH মিডিয়া প্লেলিস্টে সেলাই করা যায়।
এই নির্দেশিকাটি VOD স্ট্রিমগুলির জন্য একটি মৌলিক পড সার্ভিং ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার বাস্তবায়নের উপর দৃষ্টি নিবদ্ধ করে৷
স্ট্রিম ম্যানিফেস্ট অনুরোধ গ্রহণ করুন
ভিডিও প্লেয়ার ক্লায়েন্ট অ্যাপ থেকে ম্যানিফেস্ট অনুরোধ শোনার জন্য আপনার ম্যানিফেস্ট ম্যানিপুলেটরকে অবশ্যই একটি API এন্ডপয়েন্ট প্রদান করতে হবে। ন্যূনতম, এই এন্ডপয়েন্টটিকে অবশ্যই ক্লায়েন্ট প্লেয়ার অ্যাপ থেকে একটি স্ট্রিম আইডি সংগ্রহ করতে হবে। এই স্ট্রিম আইডিটি আপনার অ্যাড পড অনুরোধে অ্যাড ম্যানেজারের কাছে স্ট্রিমিং সেশন শনাক্ত করতে ব্যবহার করা হয়।
উপযুক্ত কন্টেন্ট স্ট্রিম শনাক্ত করার জন্য আপনাকে আরও কিছু তথ্য সংগ্রহ করতে হবে, উদাহরণস্বরূপ, একটি সামগ্রী আইডি।
উদাহরণ ম্যানিফেস্ট অনুরোধ শেষ পয়েন্ট
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
পাথ প্যারামিটার | |||||
---|---|---|---|---|---|
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে অ্যাড ম্যানেজার স্ট্রিম আইডি। | ||||
content_id | আপনার সিস্টেমের কন্টেন্ট ভিডিওর সাথে সম্পর্কিত একটি অনুমানমূলক আইডি। | ||||
format | স্ট্রিম ফর্ম্যাটের সাথে সম্পর্কিত একটি অনুমানমূলক পরামিতি। যেকোনো একটি:
|
বিষয়বস্তু স্ট্রীম পুনরুদ্ধার করুন
বিজ্ঞাপনের সাথে স্টিচ করার জন্য সামগ্রী স্ট্রীম নির্বাচন করতে ম্যানিফেস্ট অনুরোধ থেকে সংগৃহীত সামগ্রী আইডি ব্যবহার করুন।
অনুরোধ বিজ্ঞাপন পড ম্যানিফেস্ট
অ্যাড ম্যানেজার থেকে বিজ্ঞাপনের জন্য অনুরোধ করতে, আপনার সার্ভারকে অনুরোধ করা এনকোডিং প্রোফাইল এবং বিজ্ঞাপন ট্যাগ পাস করে বিজ্ঞাপন পডের শেষ পয়েন্টে একটি POST অনুরোধ করতে হবে। এই অনুরোধে স্ট্রিম আইডিও অন্তর্ভুক্ত রয়েছে যা আপনি ধাপ 1 এ সংগ্রহ করেছেন।
বিনিময়ে, আপনি প্রকাশকের বিজ্ঞাপন ট্যাগ দ্বারা অনুরোধ করা বিজ্ঞাপন পডগুলির জন্য ম্যানিফেস্ট ফাইল ধারণকারী বিজ্ঞাপন পড অবজেক্টের একটি তালিকা এবং কখন এবং কোথায় সেগুলি আপনার সামগ্রীতে ঢোকানো উচিত সে সম্পর্কে তথ্য পাবেন৷
POST /ondemand/pods/api/v1/network/{network_code}/streams/{stream_id}/adpods
Host: dai.google.com
Content-Type: application/json
পাথ প্যারামিটার | |
---|---|
network_code | প্রকাশকের Ad Manager 360 নেটওয়ার্ক কোড। |
stream_id | ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে স্ট্রিম আইডি। |
JSON বডি
শরীরের পরামিতি | ||
---|---|---|
encoding_profiles | Required | প্রতিটি বিজ্ঞাপন বিরতির জন্য আপনি যে এনকোডিং প্রোফাইলগুলি পেতে চান তার JSON উপস্থাপনাগুলির একটি তালিকা৷ নীচে বিস্তারিত দেখুন প্লেব্যাক যতটা সম্ভব নির্বিঘ্ন করতে, এটি আপনার কন্টেন্ট স্ট্রীমে ব্যবহৃত এনকোডিং প্রোফাইলের সেটের সাথে মেলে। |
ad_tag | Required | VMAP বিজ্ঞাপনের অনুরোধ করার জন্য একটি বিজ্ঞাপন ট্যাগ। |
cuepoints | Optional | কন্টেন্ট স্ট্রীমের মধ্যে কিউ পয়েন্টগুলির একটি তালিকা যেখানে মিডরোল বিজ্ঞাপন বিরতিগুলি সন্নিবেশ করা হবে৷ কিউ পয়েন্ট ফ্লোটিং পয়েন্ট সেকেন্ডে পরিমাপ করা হয়। অবস্থানগত সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
content_duration_seconds | Optional | বিষয়বস্তুর সময়কাল সেকেন্ডে। শতাংশ সময় অফসেট ব্যবহার করে মিড-রোল ধারণ করে শুধুমাত্র VMAP প্রতিক্রিয়াগুলির জন্য প্রয়োজনীয়। এটা অস্বাভাবিক। |
manifest_type | Optional | অনুরোধ করা বিজ্ঞাপন স্ট্রিমগুলির বিন্যাস, হয় hls বা dash ৷ ডিফল্ট মান হল hls । |
dai_options | Optional | ম্যানিফেস্টগুলি কীভাবে রেন্ডার করা হয় তার দিকগুলি নিয়ন্ত্রণকারী অতিরিক্ত বিকল্পগুলি৷ নীচে বিস্তারিত দেখুন |
এনকোডিং প্রোফাইল | ||
profile_name | Required | এই এনকোডিং প্রোফাইলের জন্য একটি শনাক্তকারী। এই মানটি আপনার চয়ন করা যেকোনো স্ট্রিং হতে পারে, তবে একই স্ট্রীমে একই নামের একাধিক এনকোডিং প্রোফাইল থাকতে পারে না। |
type | Required | এই এনকোডিং প্রোফাইল দ্বারা বর্ণিত স্ট্রীমের এনকোডিং প্রকার। বিষয়বস্তুর প্রকারগুলি হল: media , iframe , subtitles । |
container_type | Required | এই এনকোডিং প্রোফাইল দ্বারা ব্যবহৃত ধারক বিন্যাস। কন্টেইনার ফর্ম্যাটগুলি হল: mpeg2ts , fmp4cmaf , hls_packed_audio |
video_settings | Optional | এনকোডিং প্রোফাইল টাইপ যদি iframe হয় তাহলে প্রয়োজনীয়। অন্যথায়, শুধুমাত্র মিডিয়া টাইপ ভিডিও ধারণ করলেই অনুমোদিত। নীচে বিস্তারিত দেখুন |
audio_settings | Optional | এনকোডিং প্রোফাইলে অডিও থাকলে প্রয়োজন। টাইপ মিডিয়া হলে শুধুমাত্র অনুমোদিত. নীচে বিস্তারিত দেখুন |
subtitle_settings | Optional | এনকোডিং প্রোফাইলে সাবটাইটেল থাকলে প্রয়োজন। নীচে বিস্তারিত দেখুন |
ভিডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ ভিডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। |
frames_per_second | Required | ভিডিওর ফ্লোটিং পয়েন্ট FPS। |
resolution | Required | একটি JSON-এনকোড করা মান যাতে পিক্সেলে ভিডিও `প্রস্থ` এবং `উচ্চতা` রয়েছে। উদাহরণ: |
অডিও সেটিংস | ||
codec | Required | RFC6381 কোডেক স্ট্রিং। উদাহরণ: |
bitrate | Required | একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ অডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে। উদাহরণ: |
channels | Required | কম ফ্রিকোয়েন্সি চ্যানেল সহ অডিও চ্যানেলের সংখ্যা প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। |
sample_rate | Required | হার্টজে অডিও স্যাম্পলিং রেট প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা। উদাহরণ: |
সাবটাইটেল সেটিংস | ||
format | Required | ইন-ব্যান্ড সাবটাইটেল দ্বারা ব্যবহৃত ফাইল বিন্যাস। সমর্থিত মান হল webvtt বা ttml . |
language | Optional | একটি RFC5646 ভাষা স্ট্রিং হিসাবে সাবটাইটেল ভাষা। প্রদান করা হলে, এই মান শুধুমাত্র DASH রেন্ডারিংয়ের জন্য ব্যবহার করা হয়। উদাহরণ: en |
DAI বিকল্প | ||
dash_profile | Optional | অ্যাড পড ম্যানিফেস্টে প্রয়োগ করার জন্য MPEG-DASH প্রোফাইল৷ এই সেটিংটি শুধুমাত্র DASH ম্যানিফেস্টের জন্য ব্যবহার করা হয়। অনুমোদিত মানগুলি live বা on-demand । ডিফল্ট মান হল on-demand । মান |
ad_pod_timeout | Optional | ফ্লোটিং পয়েন্ট সেকেন্ডে বিজ্ঞাপন নির্বাচন এবং বিজ্ঞাপন পড তৈরি করতে ব্যয় করার সর্বাধিক সময়। এই সময় অতিবাহিত হওয়ার পরে, অ্যাড ম্যানেজার ad_pods প্রতিক্রিয়াতে ইতিমধ্যে নির্বাচিত যে কোনও বিজ্ঞাপন ফেরত দেয় এবং প্রক্রিয়াকরণ বন্ধ করে দেয়। |
sam_id | Optional | একটি বিকল্প ডিবাগ কী নির্দিষ্ট করে যা স্ট্রিম অ্যাক্টিভিটি মনিটরে সেশন দেখতে ব্যবহার করা যেতে পারে। |
প্রতিক্রিয়া
প্রতিক্রিয়া পরামিতি | |
---|---|
valid_for | সময়কাল যার জন্য এই বিজ্ঞাপন পড প্লেলিস্টগুলি dhms (দিন, ঘন্টা, মিনিট, সেকেন্ড) বিন্যাসে বৈধ। |
valid_until | যে তারিখ এবং সময় পর্যন্ত এই বিজ্ঞাপন পড প্লেলিস্টগুলি yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm ফর্ম্যাটে, ISO8601 তারিখের স্ট্রিং হিসাবে বৈধ। |
ad_pods | এই স্ট্রীমের জন্য নির্বাচিত বিজ্ঞাপন পডগুলির একটি তালিকা৷ |
বিজ্ঞাপন পড | |
manifest_uris | শুধুমাত্র HLS স্ট্রিমগুলির জন্য। HLS ম্যানিফেস্ট URI-তে প্রোফাইল আইডি এনকোড করার একটি মানচিত্র। |
mpd_uri | শুধুমাত্র DASH স্ট্রীমের জন্য। DASH MPD-এর URI। |
type | বিজ্ঞাপন পডের ধরন। বিজ্ঞাপন পডের প্রকারগুলি হল: pre , mid বা post । |
start | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. স্ট্রীমের অবস্থান যেখানে এই বিজ্ঞাপন পডটি ঢোকানো উচিত, ফ্লোটিং পয়েন্ট সেকেন্ডে। |
duration | ফ্লোটিং পয়েন্ট সেকেন্ডে এই বিজ্ঞাপন পডের সময়কাল। |
midroll_index | শুধুমাত্র মধ্য রোল বিজ্ঞাপন পড জন্য. বর্তমান মিড-রোল বিজ্ঞাপন পডের সূচক। সূচীকরণ 1 দিয়ে শুরু হয়। |
উদাহরণ অনুরোধ (cURL)
curl -X POST \
-d '@request-body.json' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/streams/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/adpods
উদাহরণ অনুরোধ বডি
এটি হল request-body.json
এর বিষয়বস্তু যা উপরের সিআরএল কলে উল্লেখ করা হয়েছে।
{
"encoding_profiles": [
{
"profile_name": "1080p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000c",
"bitrate": 5000000,
"frames_per_second": 30.0,
"resolution": {
"width": 1920,
"height": 1080
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 300000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "360p",
"type": "media",
"container_type": "mpeg2ts",
"video_settings": {
"codec": "avc1.4d000d",
"bitrate": 1000000,
"frames_per_second": 30.0,
"resolution": {
"width": 640,
"height": 360
}
},
"audio_settings": {
"codec": "mp4a.40.5",
"bitrate": 64000,
"channels": 2,
"sample_rate": 48000
}
},
{
"profile_name": "subtitles-webvtt",
"type": "subtitles",
"subtitle_settings": {
"format": "webvtt"
}
}
],
"ad_tag": "https://pubads.g.doubleclick.net/gampad/ads?...",
"manifest_type": "hls"
}
উদাহরণ প্রতিক্রিয়া
{
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00",
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/1/profile/subtitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
]"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile.m3u8",
"subtitles-webvtt": "https://{...}/pod/0/profile/subtitles-en.vtt""
},
"type": "post",
"duration": 10.0
}
]
}
বিষয়বস্তু মধ্যে বিজ্ঞাপন পড সেলাই
আপনার বিষয়বস্তু স্ট্রীমগুলিতে বিজ্ঞাপন পড সেলাই করার প্রক্রিয়া আপনার বাস্তবায়ন, স্ট্রিম বিন্যাস এবং আপনি বিন্যাসের নির্দিষ্টকরণ থেকে প্রয়োগ করতে বেছে নেওয়া বৈশিষ্ট্যগুলির উপর নির্ভর করে পরিবর্তিত হয়। নিম্নলিখিত কর্মপ্রবাহগুলি এই প্রক্রিয়াটি কীভাবে পরিচালনা করতে হয় তার পরামর্শ। আপনার ব্যবসার প্রয়োজন এবং আপনার বিষয়বস্তু স্ট্রীমের উপর ভিত্তি করে আপনার বাস্তবায়নের সুনির্দিষ্ট বিবরণ পরিবর্তিত হতে পারে।
HLS স্ট্রীম
আপনি যদি HLS ফর্ম্যাটে একটি স্ট্রীম সেলাই করেন, তাহলে আপনার সামগ্রী স্ট্রীমটি প্রতিটি এনকোডিং প্রোফাইলের জন্য পৃথক স্ট্রিম ম্যানিফেস্টের লিঙ্কগুলির একটি মাল্টিভেরিয়েন্ট প্লেলিস্ট হবে৷ আপনার বিজ্ঞাপন পডগুলিকে এই বৈকল্পিক ম্যানিফেস্টগুলির প্রতিটিতে ঢোকানো দরকার৷ এটি করার একটি উপায় হল সমস্ত ভেরিয়েন্ট ম্যানিফেস্ট প্রস্তুত করা এবং হোস্টিং এর জন্য একটি বিষয়বস্তু বিতরণ নেটওয়ার্ক (CDN) এ প্রেরণ করা। চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্ট হল এই CDN-হোস্ট করা ম্যানিফেস্টগুলির লিঙ্কগুলির একটি সেট৷
এনকোডিং প্রোফাইলের উপর পুনরাবৃত্তি করুন
প্রতিটি এনকোডিং প্রোফাইলের জন্য, অ্যাড ম্যানেজারের প্রতিক্রিয়া থেকে সংশ্লিষ্ট সমস্ত বিজ্ঞাপন পড মেনিফেস্ট সংগ্রহ করুন, তাদের সংশ্লিষ্ট শুরুর সময় সহ। প্রি-রোল বিজ্ঞাপন পডের জন্য, শুরুর সময় 0
এ সেট করুন। পোস্ট-রোলগুলির জন্য, বিজ্ঞাপন পডের শুরুর সময় হিসাবে সামগ্রীর সময়কাল ব্যবহার করুন৷ প্রতিটি এনকোডিং প্রোফাইলের অডিও এবং ভিডিও সেটিংসের সাথে মেলে মাল্টিভেরিয়েন্ট প্লেলিস্টে বৈকল্পিক স্ট্রীম সনাক্ত করুন৷
উদাহরণ বিজ্ঞাপন পড অ্যারে
"ad_pods": [
{
"manifest_urls":{
"1080p": "https://{...}/pod/0/profile/1080p.m3u8",
"360p": "https://{...}/pod/0/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/0/profile/subitles-en.vtt"
},
"type": "pre",
"duration": 10.0
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/1/profile/1080p.m3u8",
"360p": "https://{...}/pod/1/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/1/profile/subitles-en.vtt"
},
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
},
{
"manifest_urls":{
"1080p": "https://{...}/pod/2/profile/1080p.m3u8",
"360p": "https://{...}/pod/2/profile/360p.m3u8",
"subtitles-en": "https://{...}/pod/2/profile/subitles-en.vtt"
},
"type": "post",
"duration": 10.0
}
]
মাল্টিভেরিয়েন্ট কন্টেন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://{...}/subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://{...}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://{...}/360p.m3u8
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Profile settings: {...}
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://{...}/pod/0/profile/1080p.m3u8
15 -> https://{...}/pod/1/profile/1080p.m3u8
600 -> https://{...}/pod/2/profile/1080p.m3u8
প্রতিটি বৈকল্পিক ম্যানিফেস্টে বিজ্ঞাপন সন্নিবেশ করান
প্রতিটি বৈকল্পিক স্ট্রীমের জন্য, সামগ্রী ম্যানিফেস্টের সেগমেন্টগুলির মধ্য দিয়ে যান, একটি চলমান সামগ্রীর মোট সময় অতিবাহিত করুন৷ যখন আপনি একটি বিজ্ঞাপন পডের শুরুর অবস্থানে আসেন, তখন বিজ্ঞাপন পডের ম্যানিফেস্ট থেকে সেগমেন্টের তালিকা বের করুন, দুটি #EXT-X-DISCONTINUITY
ট্যাগে সেগমেন্টের তালিকা মুড়ে দিন এবং সামগ্রী ম্যানিফেস্টে বর্তমান অবস্থানে তালিকাটি সন্নিবেশ করুন . সমস্ত বিজ্ঞাপন পড এবং ভেরিয়েন্ট স্ট্রীম প্রক্রিয়া না হওয়া পর্যন্ত এই প্রক্রিয়াটি চালিয়ে যান।
ফলস্বরূপ ম্যানিফেস্টগুলি অবশ্যই এইচএলএস স্ট্যান্ডার্ডের সাথে সঙ্গতিপূর্ণ হবে। অতএব, আপনার বিষয়বস্তু ম্যানিফেস্টের স্পেসিফিকেশনের কোন বৈশিষ্ট্যগুলিকে অন্তর্ভুক্ত করে তার উপর নির্ভর করে, মিডিয়া সিকোয়েন্স নম্বর, বিষয়বস্তুর সময়কাল, বিচ্ছিন্নতা ক্রম নম্বর এবং অন্য কোনও ট্যাগ যা আপডেট করতে হবে তা ঠিক করার জন্য আপনাকে সম্মিলিত ম্যানিফেস্টের উপর একটি চূড়ান্ত পাস করতে হতে পারে। অ্যাকাউন্টে নতুন বিজ্ঞাপন বিভাগ। স্ট্যান্ডার্ডের সাথে কোনো অসঙ্গতি মেরামত হয়ে গেলে, হোস্টিংয়ের জন্য প্রতিটি ব্যবহারকারী-নির্দিষ্ট বৈকল্পিক ম্যানিফেস্টকে আপনার CDN-এ পুশ করুন।
আপনার বিষয়বস্তু ম্যানিফেস্ট এনক্রিপ্ট করা থাকলে, বর্তমান বিজ্ঞাপন পড শুরুর আগে পাওয়া শেষ এনক্রিপশন কীটি একটি #EXT-X-KEY
ট্যাগে সংরক্ষণ করতে হবে। তারপর, প্রতিটি বিজ্ঞাপন পডের প্রথম অংশের আগে এনক্রিপশন সরাতে আপনাকে #EXT-X-KEY:METHOD=NONE
ট্যাগ যোগ করতে হবে। পরিশেষে, কন্টেন্ট এনক্রিপশন পুনরুদ্ধার করতে আপনাকে অবশ্যই প্রতিটি বিজ্ঞাপন পডের পরে সামগ্রীর প্রথম অংশের আগে সঞ্চিত #EXT-X-KEY
ট্যাগের একটি অনুলিপি যোগ করতে হবে।
সংগৃহীত বৈকল্পিক ডেটার উদাহরণ
Encoding profile: "1080p"
Content manifest: https://{...}/1080p.m3u8
Ad pods (start time -> manifest):
0 -> https://dai.google.com/{...}pod/0/profile/1080p.m3u8
15 -> https://dai.google.com/{...}pod/1/profile/1080p.m3u8
600 -> https://dai.google.com/{...}pod/2/profile/1080p.m3u8
উদাহরণ কন্টেন্ট ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://{...}/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
উদাহরণ বিজ্ঞাপন পড ম্যানিফেস্ট
এটি সংগৃহীত ভেরিয়েন্ট ডেটাতে তালিকাভুক্ত https://dai.google.com/{...}/pod/1/profile/1080p.m3u8
ম্যানিফেস্টের বিষয়বস্তু।
#EXTM3U
{...}
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
সেলাই করা বৈকল্পিক ম্যানিফেস্টের উদাহরণ
এটি ফলস্বরূপ সেলাই করা ভেরিয়েন্ট ম্যানিফেস্ট হবে, যা CDN-এ পাস করা হবে এবং https://cdn.{...}/{userid}/1080p.m3u8
।
#EXTM3U
{...}
#EXTINF:5.000,
https://{...}/1080p/content-segment-0.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-1.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/{...}/0.ts
#EXTINF:5.000,
https://dai.google.com/{...}/1.ts
#EXTINF:5.000,
https://dai.google.com/{...}/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://{...}/1080p/content-segment-3.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-4.ts
#EXTINF:5.000,
https://{...}/1080p/content-segment-5.ts
{...}
মাল্টিভেরিয়েন্ট প্লেলিস্ট তৈরি করুন
প্রতিটি সম্পূর্ণ ভেরিয়েন্ট ম্যানিফেস্টের জন্য CDN ঠিকানা সংগ্রহ করুন, সাথে মিলে যাওয়া এনকোডিং প্রোফাইলের বিবরণ সহ, এবং ফলাফলগুলিকে একটি নতুন মাল্টিভেরিয়েন্ট ম্যানিফেস্টে একত্র করুন। এই ব্যবহারকারী-নির্দিষ্ট ম্যানিফেস্টটি ম্যানিফেস্ট অনুরোধের প্রতিক্রিয়া হিসাবে ফেরত দেওয়া হয়েছে যা আপনি ধাপ 1 এ পেয়েছেন।
চূড়ান্ত মাল্টিভেরিয়েন্ট প্লেলিস্টের উদাহরণ
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="https://cdn.{...}-subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.4d000c,mp4a.40.5"
https://cdn.{...}/{userid}/1080p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1000000,RESOLUTION=640x360,CODECS="avc1.4d000d,mp4a.40.5"
https://cdn.{...}/{userid}/360p.m3u8
MPEG DASH স্ট্রীম
আপনি যদি MPEG DASH ফরম্যাটে একটি স্ট্রিম সেলাই করছেন, তাহলে আপনাকে শুধুমাত্র একটি ফাইল তৈরি করতে হবে। এটি DASH স্ট্রীমগুলিকে HLS এর চেয়ে সহজে সেলাই করতে পারে৷
একটি সঠিকভাবে প্রস্তুত MPEG DASH মিডিয়া প্রেজেন্টেশন বর্ণনা (MPD) ফাইলে বেশ কয়েকটি পিরিয়ড থাকা উচিত, প্রতিটিতে একাধিক উপস্থাপনা থাকে। প্রতিটি উপস্থাপনা আপনার এনকোডিং প্রোফাইলগুলির একটির সাথে মেলে। অ্যাড ম্যানেজার থেকে প্রত্যাবর্তিত প্রতিটি বিজ্ঞাপন পডও একটি MPD ফাইল যাতে সামঞ্জস্যপূর্ণ উপস্থাপনা সহ পিরিয়ডের একটি ক্রম থাকে।
এই MPD ফাইলগুলিকে একসাথে সেলাই করতে, প্রতিটি বিজ্ঞাপন পডের শুরুর সময় নোট করে শুরু করুন৷ প্রি-রোলের জন্য, যেকোনো বিষয়বস্তুর সময়ের আগে প্রি-রোল অ্যাড পড পিরিয়ড ঢোকান। পোস্ট-রোলগুলির জন্য, সমস্ত বিষয়বস্তুর সময়সীমার পরে পোস্টরোল বিজ্ঞাপন পড পিরিয়ডগুলি সন্নিবেশ করুন৷ সমস্ত প্রক্রিয়াকৃত বিষয়বস্তুর সময়কালের জন্য অতিবাহিত খেলার সময় ট্র্যাক করে, সামগ্রী MPD-এ পিরিয়ডের উপর পুনরাবৃত্তি করুন। আপনি যখন বিজ্ঞাপন পডের শুরুর সময়ের সাথে সামঞ্জস্যপূর্ণ সময়ের মধ্যে একটি সীমানায় পৌঁছে যান, তখন সেই সীমানায় মিলিত মিড-রোল অ্যাড পডের MPD ফাইল থেকে পিরিয়ডগুলি সন্নিবেশ করুন৷
চূড়ান্ত সেলাই করা MPD ফাইলটি অবশ্যই MPEG_DASH স্পেসিফিকেশনের সাথে সম্পূর্ণরূপে সঙ্গতিপূর্ণ হতে হবে, তাই আপনাকে যেকোন পিরিয়ডের শুরুর সময় সংশোধন করতে, নতুন সন্নিবেশিত বিজ্ঞাপনের সময়কালের জন্য মিডিয়া উপস্থাপনার সময়কাল ঠিক করতে এবং অন্য যেকোনও সমাধান করতে হতে পারে চূড়ান্ত ফাইলটির উপর আরেকবার পুনরাবৃত্তি করতে হবে। দ্বন্দ্ব যা সেলাই প্রক্রিয়া থেকে উদ্ভূত হতে পারে.
উদাহরণ কন্টেন্ট MPD
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M00.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
উদাহরণ বিজ্ঞাপন পড JSON
[{
"mpd_uri": "https://{...}pod/1.mpd",
"type": "mid",
"start": 15.0,
"duration": 15.0,
"midroll_index": 1
}]
উদাহরণ বিজ্ঞাপন পড MPD
এটি উপরের বিজ্ঞাপন পড JSON থেকে mpd_uri
এর বিষয়বস্তু।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Ad Pod 1</Title>
</ProgramInformation>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
...
</MPD>
সেলাই করা MPD উদাহরণ
প্রাথমিক স্ট্রিম ম্যানিফেস্ট অনুরোধে আপনার প্রতিক্রিয়া হিসাবে এটি পরিবেশন করুন।
<?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H10M15.000S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011">
<ProgramInformation moreInformationURL="http://.../info">
<Title>Example Stream</Title>
</ProgramInformation>
<Period duration="PT0H0M15.000S" id="content-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-1">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-2">
...
</Period>
<Period duration="PT0H0M5.000S" id="ad-pod-1-period-3">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-2">
...
</Period>
<Period duration="PT0H0M15.000S" id="content-period-3">
...
</Period>
...
</MPD>
অতিরিক্ত সম্পদ
- IMA SDK-এর সাথে পড সার্ভিং প্লেব্যাক:
- DAI API এর সাথে পড সার্ভিং প্লেব্যাক