Google DAI API की मदद से, उन एनवायरमेंट में Google DAI की सुविधा वाली स्ट्रीम लागू की जा सकती हैं जहां IMA SDK लागू नहीं किया जा सकता. हमारा सुझाव है कि आप उन प्लैटफ़ॉर्म पर IMA का इस्तेमाल करें जहां IMA SDK काम करता है.
हमारा सुझाव है कि इन प्लैटफ़ॉर्म पर DAI API का इस्तेमाल करें:
- Samsung Smart TV (Tizen)
- LG TV
- HbbTV
- Xbox (JavaScript ऐप्लिकेशन)
- KaiOS
यह एपीआई, IMA डीएआई एसडीके की बुनियादी सुविधाओं के साथ काम करता है. अगर आपको डिवाइसों के साथ काम करने की सुविधा या काम करने वाली सुविधाओं के बारे में कोई सवाल पूछना है, तो अपने Google खाता मैनेजर से संपर्क करें.
लाइव स्ट्रीम के लिए DAI API लागू करना
DAI API, एचएलएस और डैश, दोनों प्रोटोकॉल का इस्तेमाल करके लीनियर (लाइव) स्ट्रीम के साथ काम करता है. इस गाइड में बताया गया तरीका, दोनों प्रोटोकॉल पर लागू होता है.
लाइव स्ट्रीम के लिए, अपने ऐप्लिकेशन में एपीआई को इंटिग्रेट करने के लिए, यह तरीका अपनाएं:
1. स्ट्रीम का अनुरोध करना
डीएआई एपीआई से लाइव स्ट्रीम का अनुरोध करने के लिए, स्ट्रीम एंडपॉइंट पर POST कॉल करें. JSON रिस्पॉन्स में स्ट्रीम मेनिफ़ेस्ट के साथ-साथ, उससे जुड़े DAI API एंडपॉइंट और वैल्यू शामिल होती हैं.
अनुरोध के मुख्य हिस्से का उदाहरण
https://dai.google.com/linear/v1/dash/event/0ndl1dJcRmKDUPxTRjvdog/stream
{
"key1" : "value1",
"stream_parameter1" : "value2"
}
जवाब के मुख्य हिस्से का उदाहरण
{
"stream_id":"c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS",
"stream_manifest":"https://dai.google.com/linear/dash/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/manifest.mpd",
"media_verification_url":"https://dai.google.com/view/p/service/linear/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/",
"metadata_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/metadata",
"session_update_url":"https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/session",
"polling_frequency":10
}
गड़बड़ी का जवाब
गड़बड़ियों के मामले में, स्टैंडर्ड एचटीटीपी गड़बड़ी कोड दिखाए जाते हैं. साथ ही, JSON रिस्पॉन्स बॉडी नहीं दिखाई जाती.
JSON रिस्पॉन्स को पार्स करें और इन वैल्यू को सेव करें:
- stream_id
- इस वैल्यू का इस्तेमाल, वापस भेजी गई स्ट्रीम की पहचान करने के लिए किया जा सकता है.
- stream_manifest
- स्ट्रीम चलाने के लिए, यह यूआरएल आपके मीडिया प्लेयर को भेजा जाता है.
- media_verification_url
- यह यूआरएल, वीडियो चलाने से जुड़े इवेंट को ट्रैक करने के लिए बेस एंडपॉइंट है.
- metadata_url
- इस यूआरएल का इस्तेमाल, आने वाले स्ट्रीम इवेंट के बारे में समय-समय पर जानकारी पाने के लिए किया जाता है.
- session_update_url
- इस यूआरएल का इस्तेमाल, स्ट्रीम के शुरुआती अनुरोध के दौरान भेजे गए स्ट्रीम के अनुरोध वाले पैरामीटर को अपडेट करने के लिए किया जाता है. ध्यान दें कि इस अनुरोध के पैरामीटर, पहले की स्ट्रीम के लिए सेट किए गए सभी पैरामीटर की जगह ले लेते हैं.
- polling_frequency
- यह फ़्रीक्वेंसी सेकंड में होती है. इससे यह पता चलता है कि DAI API से अपडेट किया गया AdBreak मेटाडेटा कितनी बार अनुरोध किया गया.
2. नए AdBreak मेटाडेटा के लिए पोल करें
मेटाडेटा यूआरएल का इस्तेमाल करके, AdBreak के नए मेटाडेटा के लिए पोल करने के लिए टाइमर सेट करें. अगर स्ट्रीम के जवाब में यह जानकारी नहीं दी गई है, तो सुझाव देने का डिफ़ॉल्ट अंतराल 10 सेकंड होता है.
बैंडविड्थ को ऑप्टिमाइज़ करने के लिए, यह तरीका अपनाएं:
metadata_urlएंडपॉइंट पर शुरुआतीGETअनुरोध करें.delta_tokenक्वेरी पैरामीटर को शामिल न करें. इस प्रोसेस से सर्वर, स्ट्रीम के डिजिटल वीडियो रिकॉर्डर (डीवीआर) विंडो के लिए पूरा मेटाडेटा वापस भेज पाता है. डीवीआर विंडो में, ब्रॉडकास्ट की वह समयावधि होती है जिसके दौरान दर्शक, ब्रॉडकास्ट को रिवाइंड करके चला सकते हैं. जवाब में,next_delta_tokenऑब्जेक्ट फ़ील्ड शामिल होता है.
- मेटाडेटा को क्लाइंट-साइड पर सेव करता है.
- सबसे हाल के रिस्पॉन्स से मिली
next_delta_tokenवैल्यू का इस्तेमाल करके, बाद के कॉल करें. हर जवाब मेंnext_delta_tokenवैल्यू होती है. आपको जो भी नई वैल्यू मिलती है उसे हमेशा भेजें. - बदलावों को मर्ज करने और पुराने विज्ञापन ब्रेक हटाने के लिए, सेव किए गए मेटाडेटा को अपडेट करें.
डेल्टा टोकन को पार्स करने, बनाने या उसमें बदलाव करने की कोशिश न करें. टोकन का फ़ॉर्मैट बदल सकता है. टोकन को उसी तरह सेव करें जैसा आपको मिला है. साथ ही, अगले अनुरोध में टोकन को बिना किसी बदलाव के वापस भेजें.
शुरुआती अनुरोध का उदाहरण
शुरुआती अनुरोध में कोई क्वेरी पैरामीटर नहीं होता है और पूरा मेटाडेटा दिखता है:
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/metadata
बाद के अनुरोध का उदाहरण
इसके बाद, हर अनुरोध में पिछली प्रतिक्रिया से मिली next_delta_token वैल्यू को delta_token पैरामीटर के तौर पर पास किया जाता है. जवाब में यह जानकारी शामिल है:
- विज्ञापन
- विज्ञापन के लिए ब्रेक
- ऐसे टैग जिन्हें सर्वर ने टोकन जारी करने के बाद जोड़ा या अपडेट किया है.
- स्टोर किए गए मेटाडेटा से हटाने के लिए, विज्ञापन ब्रेक की
obsolete_ad_break_idsसूची
सर्वर, विज्ञापन के उन ब्रेक को हटा देता है जिनमें कोई बदलाव नहीं हुआ है. यहां दिए गए उदाहरण में, डेल्टा टोकन का इस्तेमाल करके बाद में किए गए पोल को दिखाया गया है. इससे सिर्फ़ हाल ही के बदलावों को फ़ेच किया जा सकता है:
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/metadata?delta_token=eyJyYW5nZXMiOlt7InMiOjEsImUiOjJ9XX0
अगर यह प्रोसेस पूरी हो जाती है, तो आपको कुछ ऐसा आउटपुट दिखेगा:
{
"next_delta_token": "eyJyYW5nZXMiOlt7InMiOjEsImUiOjN9XX0",
"obsolete_ad_break_ids": ["0003069407"],
"tags":{
"google_1022389921":{
"ad":"0003069408_ad1",
"ad_break_id":"0003069408",
"type":"start"
},
...
},
"ads":{
"0003069408_ad1":{
"ad_break_id":"0003069408",
"position":1,
"duration":10.01,
"title":"External - Pod Midroll 1",
...
}
},
"ad_breaks":{
"0003069408":{
"type":"mid",
"duration":30,
"expected_duration":30,
"ads":3
}
}
}
3. ID3 इवेंट सुनने और वीडियो चलाने से जुड़े इवेंट ट्रैक करने की अनुमति
यह पुष्टि करने के लिए कि वीडियो स्ट्रीम में कुछ इवेंट हुए हैं, आईडी3 इवेंट मैनेज करने के लिए यह तरीका अपनाएं:
- मीडिया इवेंट को एक कतार में सेव करें. साथ ही, हर मीडिया आईडी को उसके टाइमस्टैंप के साथ सेव करें. टाइमस्टैंप, प्लेयर के ज़रिए दिखाया जाता है.
- प्लेयर से हर बार अपडेट होने वाले समय पर या तय की गई फ़्रीक्वेंसी (सुझाया गया 500 मि॰से॰) पर, हाल ही में चलाए गए इवेंट के लिए मीडिया इवेंट की सूची देखें. इसके लिए, इवेंट के टाइमस्टैंप की तुलना प्लेहेड से करें.
- जिन मीडिया इवेंट के चलने की पुष्टि हो गई है उनके टाइप की जांच करें. इसके लिए, सेव किए गए विज्ञापन ब्रेक टैग में मीडिया आईडी ढूंढें. ध्यान रखें कि सेव किए गए टैग में सिर्फ़ मीडिया आईडी का प्रीफ़िक्स होता है. इसलिए, सटीक मिलान नहीं किया जा सकता.
- आपका वीडियो प्लेयर ऐप्लिकेशन, मेटाडेटा यूआरएल को समय-समय पर पोल करता है. इसलिए, ऐसा हो सकता है कि स्ट्रीम में आईडी3 टैग मिलने और उससे जुड़ा मेटाडेटा उपलब्ध होने के बीच कुछ समय लगे. अगर सेव किए गए टैग में ID3 टैग नहीं मिलता है, तो टैग को एक कतार में रखें. साथ ही, अगले मेटाडेटा पोल के बाद टैग को फिर से प्रोसेस करें. प्रोसेसिंग पूरी होने तक, इवेंट को कतार में रखें.
- मेटाडेटा में टैग ढूंढने के बाद, टैग के
typeफ़ील्ड की तुलना, यहां दिए गए विज्ञापन के इवेंट टाइप से करें. यह ट्रैक करने के लिए कि वीडियो प्लेयर, विज्ञापन के लिए ब्रेक चला रहा है या नहीं,typeफ़ील्ड सेprogressवैल्यू वाले इवेंट का इस्तेमाल करें. इन इवेंट को मीडिया की पुष्टि करने वाले एंडपॉइंट पर न भेजें. अन्य सभी इवेंट टाइप के लिए, मीडिया आईडी को मीडिया की पुष्टि करने वाले एंडपॉइंट में जोड़ें औरGETप्लेबैक को ट्रैक करने का अनुरोध करें. - मीडिया इवेंट को सूची से हटाएं.
विज्ञापन इवेंट के टाइप
मेटाडेटा tags ऑब्जेक्ट में मौजूद हर टैग में, इनमें से कोई एक इवेंट टाइप होता है:
| इवेंट किस तरह का है | ब्यौरा |
|---|---|
start |
यह विज्ञापन की शुरुआत में चलता है. |
firstquartile |
यह विज्ञापन के पहले चौथाई हिस्से के खत्म होने पर ट्रिगर होता है. |
midpoint |
यह विज्ञापन के बीच में दिखता है. |
thirdquartile |
यह विज्ञापन के तीसरे क्वार्टाइल के आखिर में ट्रिगर होता है. |
complete |
यह विज्ञापन के आखिर में दिखता है. |
progress |
यह कुकी, विज्ञापन ब्रेक के दौरान समय-समय पर चलती है. इससे यह पता चलता है कि विज्ञापन ब्रेक चल रहा है. इन इवेंट को मीडिया की पुष्टि करने वाले एंडपॉइंट पर न भेजें. |
अनुरोध का उदाहरण
https://dai.google.com/view/p/service/linear/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/google_1022389921
जवाबों के उदाहरण
Accepted for asynchronous verification - HTTP/1.1 202 Accepted
Successful empty response - HTTP/1.1 204 No Content
Media verification not found - HTTP/1.1 404 Not Found
Media verification sent by someone else - HTTP/1.1 409 Conflict
स्ट्रीम ऐक्टिविटी मॉनिटर में जाकर, ट्रैकिंग इवेंट की पुष्टि की जा सकती है.
4. लाइव स्ट्रीम के सेशन पैरामीटर अपडेट करना
स्ट्रीम बन जाने के बाद, आपको सेशन पैरामीटर में बदलाव करना पड़ सकता है. इसके लिए, सेशन अपडेट करने के यूआरएल पर अनुरोध करें.
अनुरोध के मुख्य हिस्से का उदाहरण
https://dai.google.com/linear/v1/pa/event/0ndl1dJcRmKDUPxTRjvdog/stream/c4a5dad5-aaa8-4550-8acb-7cda3cdb21bb:DLS/session
{
key1 : "value1",
stream_parameter1 : "value2"
}
जवाब के मुख्य हिस्से का उदाहरण
Successful response would be to look for - HTTP/1.1 200
सीमाएं
अगर वेबव्यू में एपीआई का इस्तेमाल किया जा रहा है, तो टारगेटिंग के लिए ये सीमाएं लागू होती हैं:
- UserAgent: उपयोगकर्ता एजेंट पैरामीटर को ब्राउज़र के हिसाब से वैल्यू के तौर पर पास किया जाता है. इसे प्लैटफ़ॉर्म के हिसाब से वैल्यू के तौर पर पास नहीं किया जाता.
rdid,idtype,is_lat: डिवाइस आईडी को सही तरीके से पास नहीं किया गया है. इस वजह से, यहां दी गई सुविधाओं का इस्तेमाल सीमित तौर पर किया जा सकता है:- फ़्रीक्वेंसी कैपिंग
- क्रम से विज्ञापन रोटेशन
- ऑडियंस सेगमेंटेशन और टारगेटिंग
सबसे सही तरीके
ध्यान रखें कि लाइव स्ट्रीम इंडेक्स के लिए मेटाडेटा एंडपॉइंट, आईडी3 टैग के प्रीफ़िक्स पर आधारित होता है. ऐसा इसलिए किया गया है, ताकि पुष्टि करने वाले सभी नोड को तुरंत पिंग करने के लिए, मेटाडेटा एंडपॉइंट का इस्तेमाल न किया जा सके.
अन्य संसाधन
- एपीआई का संदर्भ दस्तावेज़
- Simple sample
- IMA SDK का दस्तावेज़
- DAI लेयर को लागू करने के अलग-अलग तरीकों की तुलना