डीआई (डिजिटल ऐक्सेस इन्स्ट्रूमेंट) की लाइव स्ट्रीम मैनेज करना

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 सेकंड होता है.

बैंडविड्थ को ऑप्टिमाइज़ करने के लिए, यह तरीका अपनाएं:

  1. metadata_url एंडपॉइंट पर शुरुआती GET अनुरोध करें.
    • delta_token क्वेरी पैरामीटर को शामिल न करें. इस प्रोसेस से सर्वर, स्ट्रीम के डिजिटल वीडियो रिकॉर्डर (डीवीआर) विंडो के लिए पूरा मेटाडेटा वापस भेज पाता है. डीवीआर विंडो में, ब्रॉडकास्ट की वह समयावधि होती है जिसके दौरान दर्शक, ब्रॉडकास्ट को रिवाइंड करके चला सकते हैं. जवाब में, next_delta_token ऑब्जेक्ट फ़ील्ड शामिल होता है.
  2. मेटाडेटा को क्लाइंट-साइड पर सेव करता है.
  3. सबसे हाल के रिस्पॉन्स से मिली next_delta_token वैल्यू का इस्तेमाल करके, बाद के कॉल करें. हर जवाब में next_delta_token वैल्यू होती है. आपको जो भी नई वैल्यू मिलती है उसे हमेशा भेजें.
  4. बदलावों को मर्ज करने और पुराने विज्ञापन ब्रेक हटाने के लिए, सेव किए गए मेटाडेटा को अपडेट करें.

डेल्टा टोकन को पार्स करने, बनाने या उसमें बदलाव करने की कोशिश न करें. टोकन का फ़ॉर्मैट बदल सकता है. टोकन को उसी तरह सेव करें जैसा आपको मिला है. साथ ही, अगले अनुरोध में टोकन को बिना किसी बदलाव के वापस भेजें.

शुरुआती अनुरोध का उदाहरण

शुरुआती अनुरोध में कोई क्वेरी पैरामीटर नहीं होता है और पूरा मेटाडेटा दिखता है:

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 इवेंट मैनेज करने के लिए यह तरीका अपनाएं:

  1. मीडिया इवेंट को एक कतार में सेव करें. साथ ही, हर मीडिया आईडी को उसके टाइमस्टैंप के साथ सेव करें. टाइमस्टैंप, प्लेयर के ज़रिए दिखाया जाता है.
  2. प्लेयर से हर बार अपडेट होने वाले समय पर या तय की गई फ़्रीक्वेंसी (सुझाया गया 500 मि॰से॰) पर, हाल ही में चलाए गए इवेंट के लिए मीडिया इवेंट की सूची देखें. इसके लिए, इवेंट के टाइमस्टैंप की तुलना प्लेहेड से करें.
  3. जिन मीडिया इवेंट के चलने की पुष्टि हो गई है उनके टाइप की जांच करें. इसके लिए, सेव किए गए विज्ञापन ब्रेक टैग में मीडिया आईडी ढूंढें. ध्यान रखें कि सेव किए गए टैग में सिर्फ़ मीडिया आईडी का प्रीफ़िक्स होता है. इसलिए, सटीक मिलान नहीं किया जा सकता.
  4. आपका वीडियो प्लेयर ऐप्लिकेशन, मेटाडेटा यूआरएल को समय-समय पर पोल करता है. इसलिए, ऐसा हो सकता है कि स्ट्रीम में आईडी3 टैग मिलने और उससे जुड़ा मेटाडेटा उपलब्ध होने के बीच कुछ समय लगे. अगर सेव किए गए टैग में ID3 टैग नहीं मिलता है, तो टैग को एक कतार में रखें. साथ ही, अगले मेटाडेटा पोल के बाद टैग को फिर से प्रोसेस करें. प्रोसेसिंग पूरी होने तक, इवेंट को कतार में रखें.
  5. मेटाडेटा में टैग ढूंढने के बाद, टैग के type फ़ील्ड की तुलना, यहां दिए गए विज्ञापन के इवेंट टाइप से करें. यह ट्रैक करने के लिए कि वीडियो प्लेयर, विज्ञापन के लिए ब्रेक चला रहा है या नहीं, type फ़ील्ड से progress वैल्यू वाले इवेंट का इस्तेमाल करें. इन इवेंट को मीडिया की पुष्टि करने वाले एंडपॉइंट पर न भेजें. अन्य सभी इवेंट टाइप के लिए, मीडिया आईडी को मीडिया की पुष्टि करने वाले एंडपॉइंट में जोड़ें और GET प्लेबैक को ट्रैक करने का अनुरोध करें.
  6. मीडिया इवेंट को सूची से हटाएं.

विज्ञापन इवेंट के टाइप

मेटाडेटा 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 टैग के प्रीफ़िक्स पर आधारित होता है. ऐसा इसलिए किया गया है, ताकि पुष्टि करने वाले सभी नोड को तुरंत पिंग करने के लिए, मेटाडेटा एंडपॉइंट का इस्तेमाल न किया जा सके.

अन्य संसाधन