VOD স্ট্রিমগুলির জন্য ম্যানিফেস্ট ম্যানিপুলেটর

পড সার্ভিং এপিআই এমনভাবে প্রস্তুত করা অভিযোজিত-বিটরেট ভিডিও বিজ্ঞাপন পডগুলিতে অ্যাক্সেস সরবরাহ করে যাতে সেগুলি সরাসরি ব্যবহারকারী-মুখী HLS বা MPEG-DASH মিডিয়া প্লেলিস্টে সেলাই করা যায়।

এই নির্দেশিকাটি VOD স্ট্রিমগুলির জন্য একটি মৌলিক পড সার্ভিং ম্যানিফেস্ট ম্যানিপুলেশন সার্ভার বাস্তবায়নের উপর দৃষ্টি নিবদ্ধ করে৷

স্ট্রিম ম্যানিফেস্ট অনুরোধ গ্রহণ করুন

ভিডিও প্লেয়ার ক্লায়েন্ট অ্যাপ থেকে ম্যানিফেস্ট অনুরোধ শোনার জন্য আপনার ম্যানিফেস্ট ম্যানিপুলেটরকে অবশ্যই একটি API এন্ডপয়েন্ট প্রদান করতে হবে। ন্যূনতম, এই এন্ডপয়েন্টটিকে অবশ্যই ক্লায়েন্ট প্লেয়ার অ্যাপ থেকে একটি স্ট্রিম আইডি সংগ্রহ করতে হবে। এই স্ট্রিম আইডিটি আপনার অ্যাড পড অনুরোধে অ্যাড ম্যানেজারের কাছে স্ট্রিমিং সেশন শনাক্ত করতে ব্যবহার করা হয়।

উপযুক্ত কন্টেন্ট স্ট্রিম শনাক্ত করার জন্য আপনাকে আরও কিছু তথ্য সংগ্রহ করতে হবে, উদাহরণস্বরূপ, একটি সামগ্রী আইডি।

উদাহরণ ম্যানিফেস্ট অনুরোধ শেষ পয়েন্ট

GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
পাথ প্যারামিটার
stream_id ক্লায়েন্ট ভিডিও প্লেয়ার অ্যাপ থেকে অ্যাড ম্যানেজার স্ট্রিম আইডি।
content_id আপনার সিস্টেমের কন্টেন্ট ভিডিওর সাথে সম্পর্কিত একটি অনুমানমূলক আইডি।
format স্ট্রিম ফর্ম্যাটের সাথে সম্পর্কিত একটি অনুমানমূলক পরামিতি। যেকোনো একটি:
mpd MPEG-DASH স্ট্রীমের জন্য
m3u8 HLS স্ট্রিমগুলির জন্য

বিষয়বস্তু স্ট্রীম পুনরুদ্ধার করুন

বিজ্ঞাপনের সাথে স্টিচ করার জন্য সামগ্রী স্ট্রীম নির্বাচন করতে ম্যানিফেস্ট অনুরোধ থেকে সংগৃহীত সামগ্রী আইডি ব্যবহার করুন।

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

অ্যাড ম্যানেজার থেকে বিজ্ঞাপনের জন্য অনুরোধ করার জন্য, আপনার সার্ভারকে অবশ্যই অ্যাড পড এন্ডপয়েন্টে একটি 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 কোডেক স্ট্রিং।

উদাহরণ: avc1.4d000c

bitrate Required একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ ভিডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে।
frames_per_second Required ভিডিওর ফ্লোটিং পয়েন্ট FPS।
resolution Required একটি JSON-এনকোড করা মান যাতে পিক্সেলে ভিডিও `প্রস্থ` এবং `উচ্চতা` রয়েছে।

উদাহরণ: {"width": 640, "height": 320}

অডিও সেটিংস
codec Required RFC6381 কোডেক স্ট্রিং।

উদাহরণ: mp4a.40.5

bitrate Required একটি পূর্ণসংখ্যা এই প্রোফাইলের সর্বোচ্চ অডিও বিটরেট প্রতি সেকেন্ডে বাইটে প্রতিনিধিত্ব করে।

উদাহরণ: 300000

channels Required কম ফ্রিকোয়েন্সি চ্যানেল সহ অডিও চ্যানেলের সংখ্যা প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা।
sample_rate Required হার্টজে অডিও স্যাম্পলিং রেট প্রতিনিধিত্বকারী একটি পূর্ণসংখ্যা।

উদাহরণ: 4800

সাবটাইটেল সেটিংস
format Required ইন-ব্যান্ড সাবটাইটেল দ্বারা ব্যবহৃত ফাইল বিন্যাস। সমর্থিত মান হল webvtt বা ttml .
language Optional একটি RFC5646 ভাষা স্ট্রিং হিসাবে সাবটাইটেল ভাষা। প্রদান করা হলে, এই মান শুধুমাত্র DASH রেন্ডারিংয়ের জন্য ব্যবহার করা হয়।

উদাহরণ: en-us

DAI বিকল্প
dash_profile Optional অ্যাড পড ম্যানিফেস্টে প্রয়োগ করার জন্য MPEG-DASH প্রোফাইল৷ এই সেটিংটি শুধুমাত্র DASH ম্যানিফেস্টের জন্য ব্যবহার করা হয়। অনুমোদিত মানগুলি live বা on-demand । ডিফল্ট মান হল on-demand

মান live MPEG-DASH প্রোফাইলের সাথে মিলে যায় "urn:mpeg:dash:profile:isoff-live:2011"

on-demand মান MPEG-DASH প্রোফাইল urn:mpeg:dash:profile:isoff-on-demand:2011 মিলে যায়।

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>

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