पॉड सर्विंग एपीआई, ऐसे अडैप्टिव-बिटरेट वीडियो विज्ञापन पॉड का ऐक्सेस देता है जिन्हें इस तरह से तैयार किया गया है कि उन्हें सीधे तौर पर उपयोगकर्ता के सामने दिखने वाली एचएलएस या MPEG-DASH मीडिया प्लेलिस्ट में जोड़ा जा सकता है.
इस गाइड में, वीओडी स्ट्रीम के लिए, बुनियादी पॉड सर्विंग मेनिफ़ेस्ट में बदलाव करने वाला एक सर्वर लागू करने के बारे में बताया गया है.
स्ट्रीम मेनिफ़ेस्ट के अनुरोध पाना
आपके मेनिफ़ेस्ट मैनिप्युलेटर को वीडियो प्लेयर क्लाइंट ऐप्लिकेशन से मेनिफ़ेस्ट के अनुरोधों को सुनने के लिए, एपीआई एंडपॉइंट देना होगा. कम से कम, इस एंडपॉइंट को क्लाइंट प्लेयर ऐप्लिकेशन से स्ट्रीम आईडी इकट्ठा करना होगा. इस स्ट्रीम आईडी का इस्तेमाल, आपके विज्ञापन पॉड के अनुरोधों में Ad Manager को स्ट्रीमिंग सेशन की पहचान करने के लिए किया जाता है.
सही कॉन्टेंट स्ट्रीम की पहचान करने के लिए, आपको कुछ और जानकारी भी इकट्ठा करनी होगी. जैसे, Content ID.
मेनिफ़ेस्ट के अनुरोध वाले एंडपॉइंट का उदाहरण
GET /api/stream_id/{stream_id}/video/{content_id}.{format}
Host: {your_domain}
| पाथ पैरामीटर | |||||
|---|---|---|---|---|---|
stream_id | 
   क्लाइंट वीडियो प्लेयर ऐप्लिकेशन से Ad Manager स्ट्रीम आईडी. | ||||
content_id | 
   आपके सिस्टम में मौजूद कॉन्टेंट वीडियो से जुड़ा एक अनुमानित आईडी. | ||||
format | 
   
    स्ट्रीम फ़ॉर्मैट से जुड़ा एक अनुमानित पैरामीटर. इनमें से कोई एक:
    
  | 
 ||||
कॉन्टेंट स्ट्रीम वापस पाना
विज्ञापनों के साथ जोड़ने के लिए कॉन्टेंट स्ट्रीम चुनने के लिए, मेनिफ़ेस्ट अनुरोध से इकट्ठा किए गए Content ID का इस्तेमाल करें.
विज्ञापन पॉड मेनिफ़ेस्ट का अनुरोध करना
Ad Manager से विज्ञापनों का अनुरोध करने के लिए, आपके सर्वर को विज्ञापन वाले पॉड के एंडपॉइंट पर एक पोस्ट अनुरोध करना होगा. इसमें, अनुरोध की गई एन्कोडिंग प्रोफ़ाइलें और विज्ञापन टैग शामिल होने चाहिए. इस अनुरोध में, पहले चरण में इकट्ठा किया गया स्ट्रीम आईडी भी शामिल होता है.
इसके बदले, आपको विज्ञापन पॉड ऑब्जेक्ट की एक सूची मिलती है. इसमें, पब्लिशर के विज्ञापन टैग से अनुरोध किए गए विज्ञापन पॉड के लिए मेनिफ़ेस्ट फ़ाइलें होती हैं. साथ ही, यह जानकारी भी होती है कि उन्हें आपके कॉन्टेंट में कब और कहां डाला जाना चाहिए.
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 | 
  
   सबटाइटल की भाषा, आरएफ़सी5646 भाषा स्ट्रिंग के तौर पर. अगर यह वैल्यू दी जाती है, तो इसका इस्तेमाल सिर्फ़ DASH रेंडरिंग के लिए किया जाता है.
    
   उदाहरण:   | 
 
डीआई के विकल्प | ||
dash_profile | 
  Optional | 
  
   विज्ञापन पॉड मेनिफ़ेस्ट पर लागू करने के लिए MPEG-DASH प्रोफ़ाइल. इस सेटिंग का इस्तेमाल सिर्फ़
    DASH मेनिफ़ेस्ट के लिए किया जाता है. live या
   on-demand को वैल्यू के तौर पर इस्तेमाल किया जा सकता है. डिफ़ॉल्ट वैल्यू on-demand है.
   
   वैल्यू  
   वैल्यू   | 
 
ad_pod_timeout | 
  Optional | 
  
   विज्ञापन चुनने और विज्ञापन पॉड बनाने में लगने वाला ज़्यादा से ज़्यादा समय, फ़्लोटिंग पॉइंट के साथ सेकंड में. यह समय बीत जाने के बाद, Ad Manager ad_pods जवाब में पहले से चुने गए विज्ञापनों को दिखाता है और प्रोसेस करना बंद कर देता है.
   | 
 
sam_id | 
  Optional | 
  एक वैकल्पिक डीबग कुंजी तय करता है. इसका इस्तेमाल, स्ट्रीम गतिविधि को मॉनिटर करने वाले टूल में सेशन देखने के लिए किया जा सकता है. | 
जवाब
| रिस्पॉन्स पैरामीटर | |
|---|---|
valid_for | 
  
   dhms
   (दिन, घंटे, मिनट, सेकंड) फ़ॉर्मैट में, विज्ञापन पॉड की प्लेलिस्ट की अवधि.
   | 
 
valid_until | 
  
   वह तारीख और समय जब तक ये विज्ञापन पॉड प्लेलिस्ट, yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
   फ़ॉर्मैट में आईएसओ8601 के मुताबिक, तारीख और समय वाली स्ट्रिंग के तौर पर मान्य हैं.
   | 
 
ad_pods | 
  इस स्ट्रीम के लिए चुने गए विज्ञापन पॉड की सूची. | 
| विज्ञापनों का पॉड | |
manifest_uris | 
  सिर्फ़ एचएलएस स्ट्रीम के लिए. एचएलएस मेनिफ़ेस्ट यूआरआई के लिए, एन्कोडिंग प्रोफ़ाइल आईडी का मैप. | 
mpd_uri | 
  सिर्फ़ DASH स्ट्रीम के लिए. DASH MPD का यूआरआई. | 
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अनुरोध के मुख्य हिस्से का उदाहरण
यह ऊपर दिए गए cURL कॉल में रेफ़र किए गए 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
    }
  ]
}
कॉन्टेंट में विज्ञापन पॉड जोड़ना
विज्ञापन पॉड को अपनी कॉन्टेंट स्ट्रीम में जोड़ने की प्रोसेस अलग-अलग होती है. यह इस बात पर निर्भर करता है कि आपने इसे कैसे लागू किया है, स्ट्रीम का फ़ॉर्मैट क्या है, और आपने फ़ॉर्मैट की खास बातों में से कौनसी सुविधाएं लागू करने का विकल्प चुना है. यहां दिए गए वर्कफ़्लो, इस प्रोसेस को मैनेज करने के सुझाव हैं. आपके कारोबार की ज़रूरतों और कॉन्टेंट स्ट्रीम के आधार पर, लागू करने की सटीक जानकारी अलग-अलग हो सकती है.
एचएलएस स्ट्रीम
अगर किसी स्ट्रीम को एचएलएस फ़ॉर्मैट में स्टिच किया जा रहा है, तो आपकी कॉन्टेंट स्ट्रीम, अलग-अलग स्ट्रीम मेनिफ़ेस्ट के लिंक की मल्टीवैरिएंट प्लेलिस्ट होगी. हर एन्कोडिंग प्रोफ़ाइल के लिए एक लिंक होगा. आपके विज्ञापन पॉड को इन सभी वैरिएंट मेनिफ़ेस्ट में डालना होगा. ऐसा करने का एक तरीका यह है कि सभी वैरिएंट मेनिफ़ेस्ट तैयार किए जाएं और उन्हें होस्ट करने के लिए कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) को भेजा जाए. मल्टीवैरिएंट वाली फ़ाइनल प्लेलिस्ट, सीडीएन पर होस्ट किए गए इन मेनिफ़ेस्ट के लिंक का एक सेट होती है.
एन्कोडिंग प्रोफ़ाइलों पर बार-बार जाना
हर एन्कोडिंग प्रोफ़ाइल के लिए, Ad Manager के रिस्पॉन्स से उससे जुड़े सभी विज्ञापन पॉड मेनिफ़ेस्ट इकट्ठा करें. साथ ही, उनके शुरू होने के समय की जानकारी भी इकट्ठा करें. प्री-रोल विज्ञापन के लिए, शुरू होने का समय 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 टैग में रैप करें और सूची को कॉन्टेंट मेनिफ़ेस्ट की मौजूदा जगह पर डालें. जब तक सभी विज्ञापन
पॉड और वैरिएंट स्ट्रीम प्रोसेस नहीं हो जातीं, तब तक यह प्रोसेस जारी रखें.
इससे मिलने वाले मेनिफ़ेस्ट, एचएलएस स्टैंडर्ड के मुताबिक होने चाहिए. इसलिए, आपके कॉन्टेंट मेनिफ़ेस्ट में स्पेसिफ़िकेशन की कौनसी सुविधाएं शामिल हैं, इसके आधार पर आपको मीडिया क्रम के नंबर, कॉन्टेंट की अवधि, विज्ञापन के बीच के अंतराल के क्रम के नंबर, और ऐसे अन्य टैग को ठीक करने के लिए, मेनिफ़ेस्ट को एक बार फिर से देखना पड़ सकता है जिन्हें नए विज्ञापन सेगमेंट को ध्यान में रखते हुए अपडेट करना ज़रूरी है. स्टैंडर्ड से जुड़ी किसी भी गड़बड़ी को ठीक करने के बाद, उपयोगकर्ता के हिसाब से बनाए गए हर वैरिएंट मेनिफ़ेस्ट को होस्ट करने के लिए, अपने सीडीएन पर पुश करें.
अगर आपका कॉन्टेंट मेनिफ़ेस्ट एन्क्रिप्ट (सुरक्षित) किया गया है, तो आपको मौजूदा विज्ञापन पॉड शुरू होने से पहले, एन्क्रिप्शन की आखिरी कुंजी को #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
स्टिच किए गए वैरिएंट मेनिफ़ेस्ट का उदाहरण
यह स्टिच किया गया वैरिएंट मेनिफ़ेस्ट होगा, जिसे सीडीएन को पास किया जाएगा और 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
{...}
मल्टीवैरिएंट प्लेलिस्ट बनाना
हर पूरे किए गए वैरिएंट मेनिफ़ेस्ट के लिए, सीडीएन पते इकट्ठा करें. साथ ही, एन्कोडिंग प्रोफ़ाइल की मैच होने वाली जानकारी भी इकट्ठा करें. इसके बाद, नतीजों को एक नए मल्टीवैरिएंट मेनिफ़ेस्ट में इकट्ठा करें. उपयोगकर्ता के हिसाब से बनाया गया यह मेनिफ़ेस्ट, पहले चरण में मिले मेनिफ़ेस्ट के अनुरोध के जवाब के तौर पर दिखाया जाता है.
एक से ज़्यादा वैरिएंट वाली फ़ाइनल प्लेलिस्ट का उदाहरण
#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 फ़ॉर्मैट में स्टिच किया जा रहा है, तो आपको सिर्फ़ एक फ़ाइल बनानी होगी. इससे, HLS की तुलना में DASH स्ट्रीम को आसानी से स्टिच किया जा सकता है.
सही तरीके से तैयार की गई MPEG DASH मीडिया प्रज़ेंटेशन डिस्क्रिप्शन (एमपीडी) फ़ाइल में कई पीरियड होने चाहिए. हर पीरियड में कई रिप्रज़ेंटेशन होने चाहिए. हर प्रतिनिधित्व, कोड में बदलने की आपकी किसी प्रोफ़ाइल से मेल खाना चाहिए. Ad Manager से मिलने वाला हर विज्ञापन पॉड, एक एमपीडी फ़ाइल भी होता है. इसमें, मैच करने वाले रिप्रज़ेंटेशन के साथ पीरियड का क्रम होता है.
इन एमपीडी फ़ाइलों को एक साथ जोड़ने के लिए, हर विज्ञापन पॉड के शुरू होने के समय का ध्यान रखें. वीडियो शुरू होने से पहले दिखने वाले विज्ञापन के लिए, किसी भी कॉन्टेंट की अवधि से पहले, वीडियो शुरू होने से पहले दिखने वाले विज्ञापन के पॉड की अवधियां डालें. वीडियो खत्म होने के बाद दिखने वाले विज्ञापनों के लिए, कॉन्टेंट की सभी अवधियों के बाद, वीडियो खत्म होने के बाद दिखने वाले विज्ञापनों के पॉड की अवधियां डालें. कॉन्टेंट एमपीडी में मौजूद अवधियों पर बार-बार जाएं. साथ ही, प्रोसेस किए गए कॉन्टेंट की सभी अवधियों के लिए, बीत चुके प्लेटाइम का ट्रैक रखें. जब आप किसी विज्ञापन पॉड के शुरू होने के समय से जुड़ी अवधियों के बीच की सीमा पर पहुंच जाएं, तो उस सीमा पर मैच करने वाले मिड-रोल विज्ञापन पॉड की एमपीडी फ़ाइल से अवधियां डालें.
एमपीडी फ़ाइल को जोड़ने के बाद, वह पूरी तरह से MPEG_DASH की शर्तों के मुताबिक होनी चाहिए. इसलिए, आपको फ़ाइनल फ़ाइल को एक बार फिर से चलाकर, किसी भी अवधि के शुरू होने के समय में बदलाव करना पड़ सकता है. साथ ही, विज्ञापन के लिए जोड़ी गई नई अवधियों को ध्यान में रखते हुए, मीडिया प्रज़ेंटेशन की अवधि को ठीक करना पड़ सकता है. इसके अलावा, एमपीडी फ़ाइल को जोड़ने की प्रोसेस के दौरान, किसी भी तरह की गड़बड़ी को ठीक करना पड़ सकता है.
कॉन्टेंट एमपीडी का उदाहरण
<?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
}]
विज्ञापन पॉड एमपीडी का उदाहरण
यह ऊपर दिए गए विज्ञापन पॉड के 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>
स्टिच किए गए एमपीडी का उदाहरण
इसे स्ट्रीम मेनिफ़ेस्ट के शुरुआती अनुरोध के जवाब के तौर पर सबमिट करें.
<?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 की मदद से पॉडकास्ट चलाना