Google DAI Pod Serving API की मदद से, Google Ads की मदद से सर्वर-साइड विज्ञापन इंसर्शन किया जा सकता है. साथ ही, वीडियो स्टिचिंग पर अपना कंट्रोल बनाए रखा जा सकता है.
इस गाइड में, पॉड सर्विंग एपीआई के साथ इंटरैक्ट करने और IMA DAI SDK टूल की मदद से मिलती-जुलती सुविधा पाने का तरीका बताया गया है. काम करने वाली सुविधाओं के बारे में खास सवालों के लिए, अपने Google खाता मैनेजर से संपर्क करें.
पॉड सर्विंग एपीआई, एचएलएस या एमपीईजी-डीएश स्ट्रीमिंग प्रोटोकॉल में पॉड सर्विंग स्ट्रीम के साथ काम करता है. इस गाइड में, एचएलएस स्ट्रीम पर फ़ोकस किया गया है. साथ ही, इसमें एचएलएस और एमपीईजी-डीएश के बीच के मुख्य अंतर को कुछ चरणों में हाइलाइट किया गया है.
वीओडी स्ट्रीम के लिए, अपने ऐप्लिकेशन में Pod Serving API को इंटिग्रेट करने के लिए, यह तरीका अपनाएं:
Ad Manager से स्ट्रीम रजिस्टर करने का अनुरोध करना
स्ट्रीम रजिस्ट्रेशन एंडपॉइंट पर POST अनुरोध करें. इसके बाद, आपको एक JSON रिस्पॉन्स मिलता है. इसमें स्ट्रीम आईडी होता है, जिसे मेनिफ़ेस्ट में बदलाव करने वाले सर्वर और उससे जुड़े पॉड सर्विंग एपीआई एंडपॉइंट पर भेजा जाता है.
एपीआई एंडपॉइंट
POST: /ondemand/pods/api/v1/network/{network_code}/stream_registration
Host: dai.google.com
Content-Type: application/json
पाथ पैरामीटर
{network_code} |
आपका Google Ad Manager 360 नेटवर्क कोड |
JSON बॉडी पैरामीटर
targeting_parameters |
विज्ञापन के टारगेटिंग पैरामीटर वाला JSON ऑब्जेक्ट. ज़रूरी है |
रिस्पॉन्स JSON
media_verification_url |
वीडियो चलाने के दौरान ट्रैकिंग इवेंट को पिंग करने के लिए बेस यूआरएल. इस बेस यूआरएल में विज्ञापन इवेंट आईडी जोड़कर, मीडिया की पुष्टि करने वाला पूरा यूआरएल बनाया जाता है. |
metadata_url |
विज्ञापन पॉड के मेटाडेटा का अनुरोध करने के लिए यूआरएल. |
stream_id |
मौजूदा स्ट्रीम सेशन की पहचान करने के लिए इस्तेमाल की जाने वाली स्ट्रिंग. |
valid_for |
मौजूदा स्ट्रीम सेशन की समयसीमा खत्म होने में बचे समय की जानकारी, dhms (दिन, घंटे, मिनट, सेकंड) फ़ॉर्मैट में. उदाहरण के लिए,
2h0m0.000s से दो घंटे की अवधि का पता चलता है.
|
valid_until |
yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm
फ़ॉर्मैट में, ISO 8601 के मुताबिक तारीख और समय की स्ट्रिंग के तौर पर, मौजूदा स्ट्रीम सेशन के खत्म होने का समय.
|
अनुरोध का उदाहरण (cURL)
curl -X POST \
-d '{"targeting_parameters":{"url":"http://example.com"}}' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration
जवाब का उदाहरण
{
"media_verification_url": "https://dai.google.com/.../media/",
"metadata_url": "https://dai.google.com/.../metadata",
"stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00"
}
गड़बड़ियों के मामले में, स्टैंडर्ड एचटीटीपी गड़बड़ी कोड, JSON रिस्पॉन्स के बिना दिखाए जाते हैं.
JSON रिस्पॉन्स को पार्स करें और काम की वैल्यू सेव करें.
मेनिफ़ेस्ट मैनिप्युलेटर से स्ट्रीम मेनिफ़ेस्ट का अनुरोध करना
हर मेनिफ़ेस्ट मैनिप्युलेटर का अनुरोध और जवाब का फ़ॉर्मैट अलग होता है. मैनिपुलेटर की खास ज़रूरतों को समझने के लिए, मैनिपुलेटर की सेवा देने वाली कंपनी से संपर्क करें. अगर आपको खुद का मेनिफ़ेस्ट मैनिपुलेटर लागू करना है, तो इस कॉम्पोनेंट की ज़रूरी शर्तों को समझने के लिए, मेनिफ़ेस्ट मैनिपुलेटर की गाइड पढ़ें.
आम तौर पर, आपको ऊपर दिए गए रजिस्ट्रेशन एंडपॉइंट से मिले स्ट्रीम आईडी को अपने मेनिफ़ेस्ट मैनिप्युलेटर को पास करना होगा, ताकि वह सेशन के हिसाब से मेनिफ़ेस्ट बना सके. अगर आपके मेनिफ़ेस्ट मैनिप्युलेटर ने साफ़ तौर पर नहीं बताया है, तो आपके मेनिफ़ेस्ट के अनुरोध का जवाब एक वीडियो स्ट्रीम होती है. इसमें कॉन्टेंट और विज्ञापन, दोनों होते हैं.
अनुरोध का उदाहरण (cURL)
curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8
रिस्पॉन्स का उदाहरण (एचएलएस)
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_ subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8
स्ट्रीम चलाना
मेनिफ़ेस्ट में बदलाव करने वाले सर्वर से मिला मेनिफ़ेस्ट, वीडियो प्लेयर में लोड करें और वीडियो चलाना शुरू करें.
Ad Manager से विज्ञापन पॉड के मेटाडेटा का अनुरोध करना
पहले चरण में मिले metadata_url
को GET
का अनुरोध करें. यह चरण, मेनिफ़ेस्ट मैनिप्युलेटर से स्टिच किया गया मेनिफ़ेस्ट मिलने के बाद ही पूरा किया जाना चाहिए. इसके बदले, आपको एक JSON ऑब्जेक्ट मिलता है. इसमें ये पैरामीटर होते हैं:
tags |
की-वैल्यू पेयर का एक सेट, जिसमें स्ट्रीम में दिखने वाले सभी विज्ञापन इवेंट शामिल होते हैं. कुंजियां, विज्ञापन इवेंट के पहले 17 वर्ण होती हैं. ये वर्ण, स्ट्रीम के टाइम मेटाडेटा में दिखते हैं. इसके अलावा, progress टाइप के इवेंट के मामले में, विज्ञापन इवेंट का पूरा आईडी कुंजी के तौर पर काम करता है.
हर वैल्यू एक ऑब्जेक्ट होती है, जिसमें ये पैरामीटर होते हैं:
|
||||||||||||||||||
ads |
स्ट्रीम में दिखने वाले सभी विज्ञापनों के बारे में बताने वाले कीवर्ड-वैल्यू पेयर का सेट.
कुंजियां, विज्ञापन आईडी होती हैं जो ऊपर दिए गए tags ऑब्जेक्ट में मिली वैल्यू से मैच करती हैं. हर वैल्यू एक ऑब्जेक्ट होती है, जिसमें ये पैरामीटर होते हैं:
|
||||||||||||||||||
ad_breaks |
कीवर्ड-वैल्यू पेयर का एक सेट, जिसमें स्ट्रीम के बीच में दिखने वाले सभी विज्ञापन ब्रेक की जानकारी होती है.
ये कुंजियां, विज्ञापन के लिए ब्रेक के आईडी हैं. ये ऊपर दिए गए tags
और ads ऑब्जेक्ट में मिली वैल्यू से मेल खाते हैं. हर वैल्यू एक ऑब्जेक्ट होती है, जिसमें ये पैरामीटर होते हैं:
|
अपनी वीडियो स्ट्रीम में, तय समय पर होने वाले मेटाडेटा इवेंट से जोड़ने के लिए, इन वैल्यू को सेव करें.
अनुरोध का उदाहरण (cURL)
curl https://dai.google.com/.../metadata
जवाब का उदाहरण
{
"tags":{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
},
"ads":{
"0000229834_ad1":{
"ad_break_id":"0000229834",
"position":1,
"duration":15,
"clickthrough_url":"https://.../",
...
},
...
},
"ad_breaks":{
"0000229834":{
"type":"mid",
"duration":15,
"ads":1
},
...
}
}
विज्ञापन इवेंट सुनना
अपने वीडियो प्लेयर की ऑडियो/वीडियो स्ट्रीम में, ट्रिगर किए गए विज्ञापन इवेंट के ज़रिए, समय के हिसाब से मेटाडेटा सुनें.
MPEG-TS स्ट्रीम के लिए, मेटाडेटा इन-बैंड ID3 v2.3 टैग के तौर पर दिखता है. हर मेटाडेटा टैग का आईडी TXXX
होता है. साथ ही, वैल्यू google_
स्ट्रिंग से शुरू होती है. इसके बाद, वर्णों की एक सीरीज़ होती है. यह वैल्यू, विज्ञापन इवेंट आईडी है.
TXXX
में मौजूद XXX
, प्लेसहोल्डर नहीं है. स्ट्रिंग TXXX
, "उपयोगकर्ता के तय किए गए टेक्स्ट" के लिए रिज़र्व किया गया ID3 टैग आईडी है.
आईडी3 टैग का उदाहरण
TXXXgoogle_1234567890123456789
MP4 स्ट्रीम के लिए, इन्हें इन-बैंड emsg इवेंट के तौर पर भेजा जाता है. ये इवेंट, ID3 v2.3 टैग को एमुलेट करते हैं. काम के हर ईमेल बॉक्स में, scheme_id_uri
वैल्यू https://aomedia.org/emsg/ID3
या
https://developer.apple.com/streaming/emsg-id3
होती है. साथ ही, message_data
वैल्यू ID3TXXXgoogle_
से शुरू होती है. ID3TXXX
प्रीफ़िक्स के बिना, यह message_data
वैल्यू विज्ञापन इवेंट आईडी है.
ईमेल बॉक्स का उदाहरण
आपके मीडिया प्लेयर की लाइब्रेरी के हिसाब से, डेटा का स्ट्रक्चर अलग-अलग हो सकता है.
अगर विज्ञापन इवेंट आईडी google_1234567890123456789
है, तो जवाब कुछ ऐसा दिखेगा:
{
"scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
"presentation_time": 27554,
"timescale": 1000,
"message_data": "ID3TXXXgoogle_1234567890123456789",
...
}
कुछ मीडिया प्लेयर लाइब्रेरी, emsg इवेंट अपने-आप दिखाती हैं. ये इवेंट, ID3 टैग को नेटिव ID3 टैग के तौर पर दिखाते हैं. इस मामले में, MP4 स्ट्रीम में MPEG_TS के तौर पर एक जैसे आईडी3 टैग मौजूद होते हैं.
क्लाइंट वीडियो प्लेयर ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) अपडेट करना
चौथे चरण में मौजूद tags
ऑब्जेक्ट में, हर विज्ञापन इवेंट आईडी को किसी कुंजी से मैच किया जा सकता है.
इन वैल्यू को मैच करने की प्रोसेस दो चरणों में पूरी होती है:
विज्ञापन इवेंट के पूरे आईडी से मैच करने वाली किसी कुंजी के लिए,
tags
ऑब्जेक्ट देखें. अगर कोई मैच मिलता है, तो इवेंट टाइप और उससे जुड़ेad
औरad_break
ऑब्जेक्ट को वापस पाएं. इन इवेंट का टाइपprogress
होना चाहिए.अगर विज्ञापन इवेंट आईडी के पूरे हिस्से के लिए कोई मैच नहीं मिलता है, तो विज्ञापन इवेंट आईडी के पहले 17 वर्णों से मैच करने वाली किसी कुंजी के लिए
tags
ऑब्जेक्ट देखें. इवेंट टाइप और उससे जुड़ेad
औरad_break
ऑब्जेक्ट को वापस पाएं. इससेprogress
के अलावा अन्य टाइप के सभी इवेंट वापस आ जाएंगे.अपने प्लेयर के यूज़र इंटरफ़ेस (यूआई) को अपडेट करने के लिए, वापस लाई गई इस जानकारी का इस्तेमाल करें. उदाहरण के लिए, जब आपको
start
या पहलाprogress
इवेंट मिलता है, तो अपने प्लेयर के आगे-पीछे जाने के कंट्रोल छिपाएं और विज्ञापन के ब्रेक में मौजूदा विज्ञापन की पोज़िशन बताने वाला ओवरले दिखाएं. उदाहरण के लिए: "तीन में से पहला विज्ञापन".
विज्ञापन इवेंट आईडी के उदाहरण
google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID
टैग ऑब्जेक्ट का उदाहरण
{
"google_5555555555":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"firstquartile"
},
"google_1234567890123456789":{
"ad":"0000229834_ad1",
"ad_break_id":"0000229834",
"type":"progress"
},
...
}
मीडिया की पुष्टि करने के लिए पिंग भेजना
जब भी progress
के अलावा किसी दूसरे टाइप का विज्ञापन इवेंट मिलता है, तो Ad Manager को मीडिया की पुष्टि करने वाला पिंग भेजना ज़रूरी होता है.
किसी विज्ञापन इवेंट का पूरा मीडिया की पुष्टि करने वाला यूआरएल जनरेट करने के लिए, स्ट्रीम रजिस्ट्रेशन रिस्पॉन्स से मिली media_verification_url
वैल्यू में पूरा विज्ञापन इवेंट आईडी जोड़ें.
पूरे यूआरएल के साथ GET अनुरोध करें. पुष्टि करने का अनुरोध पूरा होने पर, आपको स्टेटस कोड 202
वाला एचटीटीपी रिस्पॉन्स मिलता है.
ऐसा न करने पर, आपको एचटीटीपी गड़बड़ी कोड 404
दिखेगा.
अनुरोध का उदाहरण (cURL)
curl https://{...}/media/google_5555555555123456789
सफल रिस्पॉन्स का उदाहरण
HTTP/1.1 202 Accepted