वीओडी स्ट्रीम के लिए क्लाइंट वीडियो प्लेयर ऐप्लिकेशन

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 टाइप के इवेंट के मामले में, विज्ञापन इवेंट का पूरा आईडी कुंजी के तौर पर काम करता है.

हर वैल्यू एक ऑब्जेक्ट होती है, जिसमें ये पैरामीटर होते हैं:

ad ads ऑब्जेक्ट में मौजूद किसी कुंजी से मेल खाने वाले विज्ञापन का आईडी.
ad_break_id विज्ञापन के लिए ब्रेक का आईडी, जो ad_breaks ऑब्जेक्ट में मौजूद किसी कुंजी से मेल खाता है.
type विज्ञापन इवेंट का टाइप. विज्ञापन इवेंट के टाइप:
start विज्ञापन की शुरुआत में ट्रिगर होता है.
firstquartile यह पहली क्वार्टाइल के आखिर में ट्रिगर होता है.
midpoint विज्ञापन के बीच में ट्रिगर होता है.
thirdquartile तीसरे क्वार्टाइल के आखिर में ट्रिगर होता है.
complete विज्ञापन के खत्म होने पर ट्रिगर होता है.
progress विज्ञापन के दौरान समय-समय पर ट्रिगर होता है, ताकि ऐप्लिकेशन को यह सूचना दी जा सके कि विज्ञापन के लिए ब्रेक चल रहा है.
ads स्ट्रीम में दिखने वाले सभी विज्ञापनों के बारे में बताने वाले कीवर्ड-वैल्यू पेयर का सेट. कुंजियां, विज्ञापन आईडी होती हैं जो ऊपर दिए गए tags ऑब्जेक्ट में मिली वैल्यू से मैच करती हैं. हर वैल्यू एक ऑब्जेक्ट होती है, जिसमें ये पैरामीटर होते हैं:
ad_break_id विज्ञापन के लिए ब्रेक का आईडी, जो ad_breaks ऑब्जेक्ट में मौजूद किसी कुंजी से मेल खाता है.
position विज्ञापन के ब्रेक में विज्ञापनों के सेट में, यह विज्ञापन किस पोज़िशन पर दिखता है. इसे फ़्लोटिंग पॉइंट सेकंड में दिखाया जाता है.
duration फ़्लोटिंग पॉइंट सेकंड में, विज्ञापन की अवधि.
clickthrough_url अगर यह सुविधा काम करती है, तो उपयोगकर्ता के इस विज्ञापन से इंटरैक्ट करने पर खुलने वाला यूआरएल.
ad_breaks कीवर्ड-वैल्यू पेयर का एक सेट, जिसमें स्ट्रीम के बीच में दिखने वाले सभी विज्ञापन ब्रेक की जानकारी होती है. ये कुंजियां, विज्ञापन के लिए ब्रेक के आईडी हैं. ये ऊपर दिए गए tags और ads ऑब्जेक्ट में मिली वैल्यू से मेल खाते हैं. हर वैल्यू एक ऑब्जेक्ट होती है, जिसमें ये पैरामीटर होते हैं:
type विज्ञापन के लिए ब्रेक का टाइप. विज्ञापन के लिए ब्रेक के टाइप ये हैं: pre (वीडियो शुरू होने से पहले), mid (वीडियो के बीच में), और post (वीडियो खत्म होने के बाद).
duration फ़्लोटिंग पॉइंट सेकंड में, विज्ञापन के लिए ब्रेक की अवधि.
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 ऑब्जेक्ट में, हर विज्ञापन इवेंट आईडी को किसी कुंजी से मैच किया जा सकता है. इन वैल्यू को मैच करने की प्रोसेस दो चरणों में पूरी होती है:

  1. विज्ञापन इवेंट के पूरे आईडी से मैच करने वाली किसी कुंजी के लिए, tags ऑब्जेक्ट देखें. अगर कोई मैच मिलता है, तो इवेंट टाइप और उससे जुड़े ad और ad_break ऑब्जेक्ट को वापस पाएं. इन इवेंट का टाइप progress होना चाहिए.

    अगर विज्ञापन इवेंट आईडी के पूरे हिस्से के लिए कोई मैच नहीं मिलता है, तो विज्ञापन इवेंट आईडी के पहले 17 वर्णों से मैच करने वाली किसी कुंजी के लिए tags ऑब्जेक्ट देखें. इवेंट टाइप और उससे जुड़े ad और ad_break ऑब्जेक्ट को वापस पाएं. इससे progress के अलावा अन्य टाइप के सभी इवेंट वापस आ जाएंगे.

  2. अपने प्लेयर के यूज़र इंटरफ़ेस (यूआई) को अपडेट करने के लिए, वापस लाई गई इस जानकारी का इस्तेमाल करें. उदाहरण के लिए, जब आपको 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

अन्य संसाधन