वीओडी स्ट्रीम के लिए मेनिफ़ेस्ट मैन्युफ़ैक्चरर

Pod Serving API, अडैप्टिव-बिटरेट वाले वीडियो विज्ञापनों के पॉड का ऐक्सेस देता है इस तरह से कि उन्हें इस्तेमाल करने वाले एचएलएस में सीधे जोड़ा जा सके या 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 स्ट्रीम फ़ॉर्मैट से जुड़ा एक काल्पनिक पैरामीटर. इनमें से कोई एक:
mpd MPEG-DASH स्ट्रीम के लिए
m3u8 एचएलएस स्ट्रीम के लिए

कॉन्टेंट स्ट्रीम वापस पाना

कॉन्टेंट चुनने के लिए, मेनिफ़ेस्ट अनुरोध से इकट्ठा किए गए Content ID का इस्तेमाल करें स्ट्रीम करने के लिए वीडियो विज्ञापनों से जोड़ें.

विज्ञापनों के पॉड मेनिफ़ेस्ट के लिए अनुरोध करें

Ad Manager से विज्ञापन दिखाने का अनुरोध करने के लिए, आपके सर्वर को विज्ञापन से एक पोस्ट अनुरोध करना होगा pods एंडपॉइंट, अनुरोध की गई एन्कोडिंग प्रोफ़ाइल पास करना, विज्ञापन टैग, और टारगेटिंग पैरामीटर का इस्तेमाल करें. इस अनुरोध में वह स्ट्रीम आईडी भी शामिल है जिसे आपने चरण में इकट्ठा किया था 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 जवाबों के लिए ज़रूरी है जिनमें percentage समय ऑफ़सेट के लिए है. ऐसा आम नहीं है.

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

डीएआई के विकल्प
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 Manager कोई भी ad_pods जवाब और स्टॉप में पहले से ही विज्ञापन चुने गए हैं प्रोसेस चल रही है.
sam_id Optional एक ऐसी वैकल्पिक डीबग कुंजी तय करती है, जिसका इस्तेमाल स्ट्रीम गतिविधि मॉनिटर पर जाएं.

जवाब

रिस्पॉन्स के पैरामीटर
valid_for वह अवधि जिसके लिए dhms में विज्ञापनों के ये पॉड प्लेलिस्ट मान्य हैं (दिन, घंटे, मिनट, सेकंड) फ़ॉर्मैट में भेजें.
valid_until विज्ञापनों की इन पॉड प्लेलिस्ट के ISO8601 के तौर पर मान्य होने की तारीख और समय yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm में तारीख और समय की स्ट्रिंग फ़ॉर्मैट.
ad_pods इस स्ट्रीम के लिए चुने गए विज्ञापनों के पॉड की सूची.
विज्ञापनों का पॉड
manifest_uris यह सुविधा सिर्फ़ एचएलएस से लाइव स्ट्रीम करने पर मिलती है. एचएलएस मेनिफ़ेस्ट यूआरआई को कोड में बदलने के लिए इस्तेमाल होने वाली प्रोफ़ाइल आईडी का मैप.
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 का कॉन्टेंट है, जिसके बारे में ऊपर दिए गए cURL कॉल में बताया गया है.

{
  "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
    }
  ]
}

कॉन्टेंट में विज्ञापनों का पॉड जोड़ें

कॉन्टेंट स्ट्रीम में विज्ञापनों का पॉड जोड़ने की प्रोसेस अलग-अलग होती है. स्ट्रीम के फ़ॉर्मैट, और आपकी चुनी गई सुविधाओं पर लागू करें. ये वर्कफ़्लो हैं कि इस प्रोसेस को कैसे मैनेज किया जाए. आपके डिवाइस की सटीक जानकारी आपके कारोबार की ज़रूरतों और कॉन्टेंट के आधार पर, लागू करने का तरीका अलग-अलग हो सकता है स्ट्रीम.

एचएलएस स्ट्रीम

अगर एचएलएस फ़ॉर्मैट में किसी स्ट्रीम को जोड़ा जा रहा है, तो आपकी कॉन्टेंट स्ट्रीम कई वैरिएंट प्लेलिस्ट लिंक की मदद से, स्ट्रीम मेनिफ़ेस्ट को अलग-अलग करने के लिए लिंक का इस्तेमाल किया जा सकता है. आपका विज्ञापन इनमें से हर एक वैरिएंट मेनिफ़ेस्ट में पॉड को शामिल किया जाना चाहिए. एक तरफ़ ऐसा सभी वैरिएंट मेनिफ़ेस्ट तैयार करने और उन्हें कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन): होस्टिंग. फ़ाइनल मल्टीवैरिएंट प्लेलिस्ट, इन सीडीएन से होस्ट किए गए इन लिंक का सेट है मेनिफ़ेस्ट.

कोड में बदलने के तरीके की तुलना करके, हर गतिविधि के लिए अलग-अलग प्रोफ़ाइल बनाएं

कोड में बदलने वाली हर प्रोफ़ाइल के लिए, इनसे जुड़े सभी विज्ञापन पॉड मेनिफ़ेस्ट इकट्ठा करें विज्ञापन मैनेजर का जवाब और उससे जुड़े शुरू होने का समय. वीडियो शुरू होने से पहले दिखने वाले विज्ञापन के लिए पॉड, शुरू होने का समय 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 डैश स्ट्रीम

अगर आप किसी स्ट्रीम को MPEG डैश फ़ॉर्मैट में स्टिच कर रहे हैं, तो आपको सिर्फ़ . इससे एचएलएस के मुकाबले, डैश के साथ स्ट्रीम करना आसान हो जाता है.

ठीक से तैयार की गई MPEG DASH मीडिया प्रज़ेंटेशन की जानकारी (MPD) फ़ाइल इसमें कई अवधियां होती हैं. हर पीरियड में एक से ज़्यादा प्रतिनिधित्व होते हैं. हर प्रतिनिधित्व आपकी किसी एक एन्कोडिंग प्रोफ़ाइल से मेल खाना चाहिए. विज्ञापनों का हर पॉड दिखाया गया Ad Manager की एक MPD फ़ाइल भी है, जिसमें पीरियड के क्रम के साथ मैच कर रहे हैं.

इन एमपीडी फ़ाइलों को एक साथ जोड़ने के लिए, शामिल हैं. वीडियो शुरू होने से पहले दिखने वाले विज्ञापनों के लिए, किसी भी कॉन्टेंट से पहले, विज्ञापन के पॉड पीरियड को शामिल करें अवधि के लिए मान्य है. वीडियो खत्म होने के बाद दिखने वाले विज्ञापनों के लिए, सभी कॉन्टेंट के खत्म होने के बाद विज्ञापनों का पॉड पीरियड लगाएं पूर्णविराम. कॉन्टेंट की एमपीडी में अवधि के दौरान दोहराएं और ट्रैक करते हुए प्रोसेस किए गए सभी कॉन्टेंट की अवधि के लिए वीडियो चलने का बीत चुका समय. जब आप किसी सीमा पर पहुंच जाते हैं विज्ञापनों के पॉड के शुरू होने के समय से जुड़ी अवधि के बीच का समय डालें. मैच करने के लिए आपके वीडियो के बीच में दिखने वाले विज्ञापनों के पॉड की MPD फ़ाइल का इस्तेमाल करें.

फ़ाइनल स्टिच की गई एमपीडी फ़ाइल, 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>

अन्य संसाधन