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 |
स्ट्रीम फ़ॉर्मैट से जुड़ा एक काल्पनिक पैरामीटर. इनमें से कोई एक:
|
कॉन्टेंट स्ट्रीम वापस पाना
कॉन्टेंट चुनने के लिए, मेनिफ़ेस्ट अनुरोध से इकट्ठा किए गए 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 कोडेक स्ट्रिंग.
उदाहरण: |
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 रेंडरिंग के लिए किया जाता है.
उदाहरण: |
डीएआई के विकल्प | ||
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 |
विज्ञापनों की इन पॉड प्लेलिस्ट के 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>
अन्य संसाधन
- IMA SDK के साथ पॉड दिखाना:
- डीएआई की मदद से पॉड का इस्तेमाल किया जा रहा है एपीआई