Pod सर्विंग एपीआई से, अडैप्टिव-बिटरेट वाले वीडियो विज्ञापनों के पॉड को इस तरह से तैयार किया जाता है कि उन्हें सीधे उपयोगकर्ता के लिए उपलब्ध HLS या 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 अनुरोध करना होगा, जो अनुरोध की गई एन्कोडिंग प्रोफ़ाइल, विज्ञापन टैग, और टारगेटिंग पैरामीटर को पास करेगा. इस अनुरोध में वह स्ट्रीम आईडी भी शामिल है जिसे आपने पहले चरण में इकट्ठा किया था.
इसके बदले में, आपको विज्ञापनों के पॉड ऑब्जेक्ट की एक सूची मिलती है, जिसमें पब्लिशर के विज्ञापन टैग से अनुरोध किए गए विज्ञापनों के पॉड के लिए मेनिफ़ेस्ट फ़ाइलें होती हैं. साथ ही, आपको यह जानकारी भी मिलती है कि उन्हें आपके कॉन्टेंट में कब और कहां डाला जाना चाहिए.
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-कोड में बदली गई वैल्यू, जिसमें वीडियो की चौड़ाई `चौड़ाई` और `height` पिक्सल में होती है.
उदाहरण: |
ऑडियो सेटिंग | ||
codec |
Required |
RFC6381 कोडेक स्ट्रिंग.
उदाहरण: |
bitrate |
Required |
इस प्रोफ़ाइल के ऑडियो बिटरेट को बाइट प्रति सेकंड में दिखाने वाला पूर्णांक.
उदाहरण: |
channels |
Required |
कम फ़्रीक्वेंसी वाले चैनलों के साथ-साथ, ऑडियो चैनलों की संख्या दिखाने वाला पूर्णांक. |
sample_rate |
Required |
हर्ट्ज़ में ऑडियो सैंपलिंग की दर को दिखाने वाला पूर्णांक.
उदाहरण: |
सबटाइटल की सेटिंग | ||
format |
Required |
इन-बैंड सबटाइटल में इस्तेमाल किया जाने वाला फ़ाइल फ़ॉर्मैट. webvtt या ttml को वैल्यू के तौर पर इस्तेमाल
किया जा सकता है.
|
language |
Optional |
RFC5646 भाषा स्ट्रिंग के तौर पर सबटाइटल की भाषा. अगर इस वैल्यू का इस्तेमाल किया जाता है, तो इसका इस्तेमाल सिर्फ़ डैश रेंडरिंग के लिए किया जाता है.
उदाहरण: |
डीएआई के विकल्प | ||
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 फ़ॉर्मैट में, ISO8601
की तारीख और समय की स्ट्रिंग के तौर पर मान्य रहेंगी.
|
ad_pods |
इस स्ट्रीम के लिए चुने गए विज्ञापनों के पॉड की सूची. |
विज्ञापनों का पॉड | |
manifest_uris |
सिर्फ़ HLS स्ट्रीम के लिए. HLS मेनिफ़ेस्ट यूआरआई में प्रोफ़ाइल आईडी को कोड में बदलने का मैप. |
mpd_uri |
सिर्फ़ DASH स्ट्रीम के लिए. DASH एमपीडी का यूआरआई. |
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
}
]
}
कॉन्टेंट में विज्ञापनों के पॉड जोड़ें
आपकी कॉन्टेंट स्ट्रीम में विज्ञापनों के पॉड को जोड़ने की प्रोसेस अलग-अलग हो सकती है. यह प्रोसेस इन बातों पर निर्भर करती है कि आपको इन्हें लागू करने की प्रोसेस, स्ट्रीम का फ़ॉर्मैट क्या है, और आपने फ़ॉर्मैट की खास बातों में बताई गई सुविधाओं को लागू किया है या नहीं. यहां दिए गए वर्कफ़्लो, इस प्रोसेस को मैनेज करने के सुझाव देते हैं. आपको लागू करने की सटीक जानकारी, आपके कारोबार की ज़रूरतों और कॉन्टेंट स्ट्रीम पर निर्भर करती है.
HLS स्ट्रीम
अगर आपने HLS फ़ॉर्मैट में किसी स्ट्रीम को स्टिच किया है, तो आपकी कॉन्टेंट स्ट्रीम, अलग-अलग स्ट्रीम मेनिफ़ेस्ट के लिंक की मल्टीवेरिएट प्लेलिस्ट होगी. इस प्लेलिस्ट में, हर एन्कोडिंग प्रोफ़ाइल के लिए एक लिंक शामिल होगा. आपके विज्ञापनों के पॉड को इनमें से हर एक वैरिएंट मेनिफ़ेस्ट में डाला जाना चाहिए. इसका एक तरीका यह है कि सभी वैरिएंट मेनिफ़ेस्ट तैयार करें और उन्हें होस्ट करने के लिए, कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) को भेजा जाए. फ़ाइनल मल्टीवैरिएंट प्लेलिस्ट, सीडीएन से होस्ट किए गए इन मेनिफ़ेस्ट के लिंक का सेट होती है.
प्रोफ़ाइल को कोड में बदलने के दौरान दोहराने की सुविधा इस्तेमाल करें
कोड में बदलने की हर प्रोफ़ाइल के लिए, 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
टैग में रैप करें, और
सूची को कॉन्टेंट मेनिफ़ेस्ट में
मौजूदा जगह पर डालें. यह प्रोसेस तब तक जारी रखें, जब तक विज्ञापनों के सभी पॉड और वैरिएंट स्ट्रीम प्रोसेस नहीं हो जातीं.
सभी मेनिफ़ेस्ट, HLS स्टैंडर्ड के मुताबिक होने चाहिए. इसलिए, आपके कॉन्टेंट मेनिफ़ेस्ट में शामिल की गई खास बातों के आधार पर, आपको मिले-जुले मेनिफ़ेस्ट को फ़ाइनल पास करना होगा. इससे मीडिया क्रम संख्या, कॉन्टेंट की अवधि, और एक-एक विज्ञापन के क्रम की संख्या बंद होने के क्रम की संख्या और ऐसे किसी भी टैग को ठीक किया जा सकता है जिन्हें नए विज्ञापन सेगमेंट को ध्यान में रखने के लिए अपडेट करने की ज़रूरत है. स्टैंडर्ड से जुड़ी गड़बड़ियां ठीक हो जाने के बाद, हर उपयोगकर्ता के हिसाब से बने वैरिएंट मेनिफ़ेस्ट को होस्ट करने के लिए, अपने सीडीएन में पुश करें.
अगर आपके कॉन्टेंट मेनिफ़ेस्ट को एन्क्रिप्ट (सुरक्षित) किया गया है, तो आपको #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 डैश फ़ॉर्मैट में किसी स्ट्रीम को स्टिच करना है, तो आपको सिर्फ़ एक फ़ाइल बनानी होगी. इससे HLS की तुलना में DASH स्ट्रीम को स्टिच करना आसान हो जाता है.
सही तरीके से तैयार की गई MPEG DASH मीडिया प्रज़ेंटेशन जानकारी (MPD) फ़ाइल में कई अवधि होनी चाहिए. हर अवधि में एक से ज़्यादा प्रतिनिधि होने चाहिए. हर एक प्रज़ेंटेशन, आपकी एन्कोडिंग प्रोफ़ाइल से मेल खाना चाहिए. 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 के साथ काम करने वाले पॉड में वीडियो चलाने की सुविधा:
- डीएआई एपीआई का इस्तेमाल करके, पॉड सर्व करने वाले प्लेबैक की सुविधा