पॉड सर्विंग एपीआई, अडैप्टिव-बिटरेट वीडियो विज्ञापनों के पॉड को इस तरह से तैयार करता है कि उन्हें सीधे उपयोगकर्ता के लिए उपलब्ध 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 में कोड में बदली गई वैल्यू, जिसमें वीडियो की `चौड़ाई` और `ऊंचाई` पिक्सल में होती है.
उदाहरण: |
ऑडियो सेटिंग | ||
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
अनुरोध का मुख्य हिस्सा
यह 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
}
]
}
कॉन्टेंट में विज्ञापनों के पॉड जोड़ें
आपके कॉन्टेंट स्ट्रीम में विज्ञापनों के पॉड जोड़ने की प्रोसेस अलग-अलग होगी. यह इस बात पर निर्भर करेगा कि आपने कौनसी सुविधाएं लागू की हैं, स्ट्रीम फ़ॉर्मैट क्या है, और फ़ॉर्मैट की खास बातों में बताई गई सुविधाओं को कौनसे तरीके से लागू करना है. इस प्रोसेस को मैनेज करने के तरीके के बारे में यहां दिए गए वर्कफ़्लो के सुझाव दिए गए हैं. लागू करने की सटीक जानकारी, आपके कारोबार की ज़रूरतों और कॉन्टेंट स्ट्रीम के आधार पर अलग-अलग हो सकती है.
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 से मिलने वाले हर विज्ञापन पॉड की एक एमपीडी फ़ाइल भी होती है, जिसमें फ़ुल स्टॉप के साथ मेल खाने वाले निरूपणों का क्रम होता है.
इन एमपीडी फ़ाइलों को एक साथ जोड़ने के लिए, हर विज्ञापन पॉड के शुरू होने के समय को ध्यान में रखकर शुरुआत करें. वीडियो शुरू होने से पहले दिखने वाले विज्ञापन के लिए, वीडियो शुरू होने से पहले दिखने वाले विज्ञापनों के पॉड पीरियड डालें. वीडियो खत्म होने के बाद दिखने वाले विज्ञापनों के लिए, कॉन्टेंट की सभी अवधियों के बाद पोस्टरोल विज्ञापनों के पॉड पीरियड डालें. प्रोसेस किए गए सभी कॉन्टेंट की अवधि के लिए, प्लेटाइम को ट्रैक करते हुए, कॉन्टेंट के एमपीडी में समय-समय पर इसे दोहराएं. जब विज्ञापन पॉड के शुरू होने के समय से जुड़ी अवधि के बीच की सीमा पर पहुंच जाता है, तो उस सीमा में मैच करने वाले मिड-रोल विज्ञापनों के पॉड की एमपीडी फ़ाइल से पीरियड डालें.
अंतिम रूप से जोड़ी गई 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>
अन्य संसाधन
- IMA SDK के साथ चलने वाले पॉड की सुविधा:
- डीएआई की मदद से पॉड दिखाने वाले वीडियो एपीआई