इस गाइड में, विज्ञापनों के पॉड के समय के मेटाडेटा (एटीएम) का इस्तेमाल करके, विज्ञापन के लिए ब्रेक डालने का तरीका बताया गया है. इससे विज्ञापन के लिए ब्रेक का सटीक समय और अवधि का पता चलता है. इसमें वीडियो शुरू होने से पहले दिखने वाला विज्ञापन भी शामिल है.
वीडियो शुरू होने से पहले दिखने वाले विज्ञापन डालने और बीच में दिखने वाले विज्ञापन के बाद कॉन्टेंट पर वापस जाने की सुविधा को मैनेज करने के लिए, हमारा सुझाव है कि आप इन एपीआई को कॉल करें:
- विज्ञापन पॉड की टाइमिंग का मेटाडेटा (एटीएम) एपीआई: विज्ञापन पॉड के फ़ैसले से जुड़े नतीजों के बारे में क्वेरी करता है. इनमें विज्ञापन और स्लेट की अवधि शामिल है.
- विज्ञापन सेगमेंट एंडपॉइंट: विज्ञापन या स्लेट सेगमेंट का अनुरोध करें. साथ ही, मौजूदा विज्ञापन पॉड को खत्म करने का विकल्प चुनें.
ज़्यादा लोगों के एक साथ लाइव स्ट्रीम देखने वाले इवेंट के लिए, हमारा सुझाव है कि विज्ञापन ब्रेक शुरू होने से पहले विज्ञापन दिखाने के फ़ैसले शेड्यूल करने के लिए, विज्ञापन ब्रेक की सूचना देने वाले एपीआई (ईएबीएन) का इस्तेमाल करें.
ज़रूरी शर्तें
शुरू करने के लिए, आपको पॉड सर्विंग रीडायरेक्ट वाले डाइनैमिक ऐड इंसर्शन (डीएआई) के टाइप के लिए, लाइव स्ट्रीम इवेंट सेट अप करना होगा. इनमें से कोई एक तरीका चुनें:
- Ad Manager का यूज़र इंटरफ़ेस (यूआई): डीएआई के लिए लाइव स्ट्रीम सेट अप करें.
- Ad Manager API:
LiveStreamEventService.createLiveStreamEventsतरीके को कॉल करने के लिए, क्लाइंट लाइब्रेरी (उपलब्ध विकल्प) का इस्तेमाल करें.LiveStreamEvent.dynamicAdInsertionTypeपैरामीटर कोPOD_SERVING_REDIRECTपर सेट करें.
कॉन्टेंट स्ट्रीम वापस पाना
जब कोई उपयोगकर्ता लाइव स्ट्रीम इवेंट चुनता है, तो क्लाइंट ऐप्लिकेशन, Google Ad Manager को स्ट्रीम करने का अनुरोध करता है. स्ट्रीम के जवाब में, ऐप्लिकेशन Google DAI सेशन आईडी और मेटाडेटा को स्ट्रीम मेनिफ़ेस्ट अनुरोध में शामिल करने के लिए निकालता है.
यहां दिए गए उदाहरण में, Google DAI सेशन आईडी को मेनिफ़ेस्ट मैनिपुलेटर को पास करने का तरीका बताया गया है:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
वीडियो कॉन्टेंट चलाने के अनुरोध को प्रोसेस करते समय, Google DAI सेशन आईडी और अनुरोध से मिले CUSTOM_ASSET_KEY को सेव करें, ताकि विज्ञापन स्टिचिंग की जा सके.
विज्ञापनों के पॉड की टाइमिंग का मेटाडेटा वापस पाना
विज्ञापनों के पॉड का समय वापस पाने के लिए, यह तरीका अपनाएं:
- एचएमएसी टोकन जनरेट करें.
- HMAC टोकन के साथ ATM API को कॉल करें.
वीडियो शुरू होने से पहले दिखने वाले विज्ञापनों के लिए, अनुरोध के समय का मेटाडेटा पाना
लाइव स्ट्रीम इवेंट के लिए, वीडियो शुरू होने से पहले विज्ञापन सेटिंग की पुष्टि करने के लिए, इनमें से कोई विकल्प इस्तेमाल करें:
- डीएआई की मदद से दिखाई जाने वाली लाइव स्ट्रीम में प्री-रोल विज्ञापन (बीटा वर्शन)
- LiveStreamEvent.prerollsettings
प्री-रोल विज्ञापन के फ़ैसले के नतीजे पाने के लिए, एटीएम एपीआई से अनुरोध करें.
यहां दिए गए उदाहरण में, प्री-रोल विज्ञापनों के लिए एटीएम अनुरोध किया गया है:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"
वीडियो के बीच में दिखने वाले विज्ञापनों के लिए, समय के हिसाब से मेटाडेटा का अनुरोध करना
मिड-रोल के लिए विज्ञापनों के पॉड का मेटाडेटा वापस पाने के लिए, यह तरीका अपनाएं:
- लाइव स्ट्रीम के मेनिफ़ेस्ट को पार्स करके, विज्ञापन मार्कर ढूंढता है. इन मार्कर में, वीडियो के बीच में दिखने वाले हर विज्ञापन ब्रेक का समय और अवधि शामिल होती है.
- विज्ञापन पॉड और स्लेट की सटीक अवधि का अनुरोध करने के लिए, ATM API एंडपॉइंट को कॉल करें. एपीआई, विज्ञापन पॉड के फ़ैसले के नतीजों के साथ एक JSON ऑब्जेक्ट दिखाता है.
यहां दिए गए उदाहरण में, वीडियो के बीच में विज्ञापन दिखाने के लिए एटीएम अनुरोध किया गया है:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"
अगर अनुरोध पूरा हो जाता है, तो आपको इस JSON ऑब्जेक्ट जैसा आउटपुट दिखेगा:
{
"status": "final",
"ads": [
{
"duration_ms": 5046,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
}
}
}
],
"slate": {
"duration_ms": 0,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
}
}
}
}
कॉन्टेंट मेनिफ़ेस्ट में विज्ञापन स्टिच करना
यहां दिए गए सेक्शन में, लाइव स्ट्रीम के मेनिफ़ेस्ट में बदलाव करने और विज्ञापन सेगमेंट जोड़ने का तरीका बताया गया है.
विज्ञापन ब्रेक सेगमेंट की पहचान करना और उन्हें अलग-अलग हिस्सों में बांटना
हर वैरिएंट मेनिफ़ेस्ट को प्रोसेस करते समय, अपनी स्ट्रीम में EXT-X-CUE-IN और EXT-X-CUE-OUT टैग ढूंढें. इनसे विज्ञापन ब्रेक की शुरुआत और खत्म होने का पता चलता है.
क्लाइंट के वीडियो प्लेयर के लिए, EXT-X-CUE-IN और EXT-X-CUE-OUT टैग को EXT-X-DISCONTINUITY एलिमेंट से बदलें, ताकि कॉन्टेंट और विज्ञापनों के बीच स्विच किया जा सके.
यहां दिए गए मेनिफ़ेस्ट के उदाहरण में, EXT-X-CUE-IN और EXT-X-CUE-OUT टैग को बदला गया है:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:17.450
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXTINF:2.450,
contentorigin.com/6.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
यहां बदले गए मेनिफ़ेस्ट का उदाहरण दिया गया है:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
Google DAI के विज्ञापन सेगमेंट एन्क्रिप्ट (सुरक्षित) नहीं किए जाते. अगर आपका कॉन्टेंट एन्क्रिप्ट (सुरक्षित) किया गया है, तो हर विज्ञापन ब्रेक के पहले विज्ञापन सेगमेंट से पहले EXT-X-KEY:METHOD=NONE एलिमेंट डालकर, एन्क्रिप्शन हटाएं. विज्ञापन के लिए ब्रेक के खत्म होने पर, सही EXT-X-KEY डालकर एन्क्रिप्शन की सुविधा को फिर से चालू करें.
आने वाले विज्ञापन ब्रेक के शुरू होने के समय, अवधि, और इंडेक्स को ट्रैक करें.
विज्ञापन सेगमेंट के यूआरएल बनाना
EXT-X-DISCONTINUITY टैग के बीच मौजूद कॉन्टेंट सेगमेंट को, हर विज्ञापन सेगमेंट के यूआरएल से बदलें. कितने विज्ञापन सेगमेंट डालने हैं, यह तय करने के लिए ATM API से मिले JSON रिस्पॉन्स में दिए गए ads.segment_durations.values का इस्तेमाल करें.
विज्ञापन पॉड के पूरा होने से पहले कॉन्टेंट पर वापस जाने के लिए, जैसे कि EXT-X-CUE-IN टैग का पता लगाने पर, आपके मेनिफ़ेस्ट मैनिपुलेटर को फ़ाइनल विज्ञापन सेगमेंट के यूआरएल में sd= पैरामीटर जोड़ना होगा.
यह पैरामीटर, सेगमेंट को छोटा कर देता है, ताकि क्लाइंट के वीडियो प्लेयर की टाइमलाइन पर कोई असर न पड़े.
यहां दिए गए उदाहरण में, वीडियो शुरू होने से पहले दिखने वाले विज्ञापन सेगमेंट के यूआरएल को मेनिफ़ेस्ट में जोड़ा गया है. ध्यान दें कि विज्ञापन सेगमेंट में, ज़ीरो-आधारित इंडेक्स का इस्तेमाल किया जाता है:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
यहां दिए गए उदाहरण में, मेनिफ़ेस्ट में वीडियो के बीच में दिखने वाले विज्ञापन के सेगमेंट का यूआरएल जोड़ने का तरीका बताया गया है:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
यहां दिए गए उदाहरण में, मेनिफ़ेस्ट में विज्ञापन सेगमेंट जोड़े गए हैं:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/3.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
स्लेट सेगमेंट बनाना
विज्ञापन और कॉन्टेंट के बीच के अंतर को भरने के लिए, स्लेट सेगमेंट डालें.
एटीएम एपीआई के JSON रिस्पॉन्स से मिले slates.segment_durations.values ऐरे का इस्तेमाल करके, स्लेट के हर सेगमेंट की अवधि का पता लगाएं. विज्ञापन ब्रेक को पूरा करने के लिए, सेगमेंट की अवधि को ज़रूरत के हिसाब से दोहराएं.
विज्ञापन पॉड के पूरा होने से पहले कॉन्टेंट पर वापस जाने के लिए, जैसे कि EXT-X-CUE-IN टैग का पता लगाने पर, फ़ाइनल स्लेट सेगमेंट के यूआरएल में sd= पैरामीटर जोड़ें. यह पैरामीटर, सेगमेंट को छोटा करता है, ताकि क्लाइंट के वीडियो प्लेयर की टाइमलाइन पर कोई असर न पड़े. sd= पैरामीटर की वैल्यू एक पूर्णांक होनी चाहिए. यह पूर्णांक, सेगमेंट को छोटा करने के लिए मिलीसेकंड में अवधि दिखाता है.
यहां स्लेट सेगमेंट बनाने का उदाहरण दिया गया है:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
उदाहरण में मौजूद slate/0, स्लेट के वर्शन नंबर को दिखाता है. अपने क्लाइंट के वीडियो प्लेयर की कंपैटिबिलिटी और कैश मेमोरी की सुविधा के बारे में जानें. इससे यह तय करने में मदद मिलेगी कि स्लेट के हर लूप के लिए, 0 से शुरू करके इस संख्या को बढ़ाना है या सभी लूप के लिए इसे 0 पर रखना है.
कॉन्टेंट पर वापस जाने की सुविधा मैनेज करना
जब आपका मेनिफ़ेस्ट मैनिपुलेटर, विज्ञापन पॉड के सभी सेगमेंट डाल देता है, तब आपके मेनिफ़ेस्ट मैनिपुलेटर को कॉन्टेंट स्ट्रीम पर वापस जाना होगा. कॉन्टेंट स्ट्रीम पर वापस जाने के लिए, इनमें से कोई एक तरीका चुनें. हर तरीके में, स्ट्रीम की टाइमलाइन को सटीक बनाए रखने के लिए, फ़ाइनल री-अलाइनमेंट सेगमेंट की ज़रूरत होती है.
भरना और फिर से अलाइन करना: स्लेट सेगमेंट डालें और स्लेट को लूप करें.
अवधि की जानकारी भरें और हर स्लेट के बीच EXT-X-DISCONTINUITY एलिमेंट डालें. कॉन्टेंट शुरू होने के समय से मेल खाने के लिए, आखिरी सेगमेंट में मिलीसेकंड में sd= पैरामीटर जोड़ें.
तुरंत दिखने वाला री-अलाइनमेंट: sd= पैरामीटर का इस्तेमाल करके, री-अलाइनमेंट स्लेट का एक सेगमेंट डालें. इसके बाद, कॉन्टेंट डालें.
वीडियो प्लेयर, टाइमलाइन में बदलाव किए बिना कॉन्टेंट पर वापस चला जाता है.
यहां दिए गए उदाहरण में, विज्ञापन ब्रेक की बाकी अवधि में स्लेट सेगमेंट जोड़कर ट्रांज़िशन बनाया गया है.
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
इस तरीके में, आपका मेनिफ़ेस्ट मैनिपुलेटर, ज़रूरत के मुताबिक स्लेट को लूप करता है. साथ ही, sd= यूआरएल पैरामीटर को सिर्फ़ स्लेट के आखिरी सेगमेंट में जोड़ता है. यह प्रोसेस, कॉन्टेंट के शेड्यूल किए गए समय के हिसाब से शुरू होती है.
यहां दिए गए उदाहरण में, sd= पैरामीटर के साथ एक स्लेट सेगमेंट का इस्तेमाल करने का तरीका बताया गया है. इससे, खिलाड़ी की टाइमलाइन को सटीक बनाए रखने में मदद मिलती है. ऐसा तब होता है, जब लूप की गई स्लेट से पूरे बचे हुए ब्रेक को नहीं भरा जाता है.
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID&sd=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.ts
#EXTINF:5.000,
contentorigin.com/8.ts
ज़रूरी नहीं: विज्ञापन के लिए ब्रेक शेड्यूल करना
अपनी फ़िल रेट बेहतर बनाने के लिए, विज्ञापनों के पॉड की अवधि, कस्टम टारगेटिंग पैरामीटर, और SCTE-35 सिग्नल डेटा के साथ, विज्ञापन ब्रेक की सूचना (ईएबीएन) भेजें. ज़्यादा जानकारी के लिए, विज्ञापन ब्रेक की सूचनाएं जल्दी भेजने का तरीका लेख पढ़ें.