क्लाइंट को पॉड सर्विंग रीडायरेक्ट के लिए तैयार करना

इस गाइड में, Pod serving API और मेनिफ़ेस्ट मैनिपुलेटर की मदद से, HLS या DASH लाइव स्ट्रीम लोड करने के लिए क्लाइंट ऐप्लिकेशन डेवलप करने के बारे में बताया गया है.

ज़रूरी शर्तें

जारी रखने से पहले, आपके पास ये चीज़ें होनी चाहिए:

  • लाइव स्ट्रीम इवेंट के लिए कस्टम ऐसेट की, जिसे Pod serving redirect DAI टाइप के साथ कॉन्फ़िगर किया गया है. यह कुंजी पाने के लिए, यह तरीका अपनाएं:

  • यह पता लगाएं कि इंटरैक्टिव मीडिया विज्ञापन (आईएमए) SDK टूल, आपके प्लैटफ़ॉर्म के लिए उपलब्ध है या नहीं. हमारा सुझाव है कि रेवेन्यू बढ़ाने के लिए, IMA SDK का इस्तेमाल करें. ज़्यादा जानकारी के लिए, DAI के लिए IMA SDK सेट अप करना लेख पढ़ें.

स्ट्रीम करने का अनुरोध करना

जब कोई उपयोगकर्ता स्ट्रीम चुनता है, तो यह तरीका अपनाएं:

  1. लाइव स्ट्रीम करने की सेवा के तरीके के लिए, POST अनुरोध करें. ज़्यादा जानकारी के लिए, तरीका: स्ट्रीम देखें.

  2. विज्ञापन टारगेटिंग पैरामीटर को application/x-www-form-urlencoded या application/json फ़ॉर्मैट में पास करें. इस अनुरोध से, स्ट्रीम सेशन को Google DAI के साथ रजिस्टर किया जाता है.

    यहां दिए गए उदाहरण में, स्ट्रीम करने का अनुरोध किया गया है:

    फ़ॉर्म एन्कोडिंग

    const url = `https://dai.google.com/ssai/pods/api/v1/` +
          `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`;
    
    const params = new URLSearchParams({
            cust_params: 'section=sports&page=golf,tennis'
    }).toString();
    
    const response = await fetch(url, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: params
    });
    
    console.log(await response.json());
    

    JSON एन्कोडिंग

    const url = `https://dai.google.com/ssai/pods/api/v1/` +
          `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`;
    
    const response = await fetch(url, {
            method: 'POST',
            headers: {
              'Content-Type': 'application/json'
            },
            body: JSON.stringify({
              cust_params: {
                section: 'sports',
                page: 'golf,tennis'
              }
            })
    });
    
    console.log(await response.json());
    

    अगर यह प्रोसेस पूरी हो जाती है, तो आपको कुछ ऐसा आउटपुट दिखेगा:

    {
    "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS",
    "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/",
    "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata",
    "session_update_url": "https://dai.google.com/linear/.../session",
    "polling_frequency": 10
    }
    
  3. JSON रिस्पॉन्स में, स्ट्रीम सेशन आईडी ढूंढें और अगले चरणों के लिए अन्य डेटा सेव करें.

पोल वाले विज्ञापन का मेटाडेटा

विज्ञापन के मेटाडेटा को पोल करने के लिए, यह तरीका अपनाएं:

  1. स्ट्रीम रजिस्ट्रेशन के जवाब से, metadata_url वैल्यू पढ़ें.

  2. एंडपॉइंट पर GET अनुरोध करें. ज़्यादा जानकारी के लिए, तरीका: मेटाडेटा देखें.

    यहां दिए गए उदाहरण में, विज्ञापन का मेटाडेटा फ़ेच करने का तरीका बताया गया है:

    const response = await fetch(metadata_url);
    console.log(await response.json());
    

    अगर अनुरोध पूरा हो जाता है, तो आपको मौजूदा और आने वाले विज्ञापन ब्रेक के लिए, PodMetadata रिस्पॉन्स मिलता है:

    {
      "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
        },
        ...
      }
    }
    
  3. बाद के चरणों के लिए, tags ऑब्जेक्ट सेव करें.

  4. polling_frequency वैल्यू का इस्तेमाल करके टाइमर सेट करें, ताकि सभी लगातार विज्ञापन ब्रेक के लिए मेटाडेटा का अनुरोध नियमित तौर पर किया जा सके.

स्ट्रीम को अपने वीडियो प्लेयर में लोड करें

रजिस्ट्रेशन रिस्पॉन्स से सेशन आईडी मिलने के बाद, इसे अपने मेनिफ़ेस्ट मैनिपुलेटर को पास करें. इसके अलावा, वीडियो प्लेयर में स्ट्रीम लोड करने के लिए, मेनिफ़ेस्ट यूआरएल बनाया जा सकता है.

सेशन आईडी पास करने के लिए, मेनिफ़ेस्ट मैनिपुलेटर का दस्तावेज़ देखें. अगर आपको मेनिफ़ेस्ट मैनिपुलेटर डेवलप करना है, तो लाइव स्ट्रीम के लिए मेनिफ़ेस्ट मैनिपुलेटर देखें.

यहां दिए गए उदाहरण में, मेनिफ़ेस्ट यूआरएल को असेंबल करने का तरीका बताया गया है:

https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"

जब आपका प्लेयर तैयार हो जाए, तब वीडियो चलाना शुरू करें.

विज्ञापन इवेंट को मॉनिटर करने की अनुमति

टाइम किए गए मेटाडेटा के लिए, अपनी स्ट्रीम के कंटेनर फ़ॉर्मैट की जांच करें:

  • ट्रांसपोर्ट स्ट्रीम (टीएस) कंटेनर वाली एचएलएस स्ट्रीम, टाइम किए गए आईडी3 टैग का इस्तेमाल करती हैं. इससे टाइम किया गया मेटाडेटा ट्रांसफ़र किया जाता है. ज़्यादा जानकारी के लिए, एचटीटीपी लाइव स्ट्रीमिंग (एचएलएस) के साथ काम करने वाले कॉमन मीडिया ऐप्लिकेशन फ़ॉर्मैट के बारे में जानकारी लेख पढ़ें.

  • DASH स्ट्रीम, मेनिफ़ेस्ट में इवेंट तय करने के लिए EventStream एलिमेंट का इस्तेमाल करती हैं.

  • जब सेगमेंट में पेलोड डेटा के लिए इवेंट मैसेज (emsg) बॉक्स शामिल होते हैं, तब DASH स्ट्रीम InbandEventStream एलिमेंट का इस्तेमाल करती हैं. इनमें ID3 टैग शामिल होते हैं. ज़्यादा जानकारी के लिए, InbandEventStream देखें.

  • सीएमएएफ़ स्ट्रीम, जैसे कि DASH और HLS, में आईडी3 टैग वाले emsg बॉक्स का इस्तेमाल किया जाता है.

अपनी स्ट्रीम से ID3 टैग वापस पाने के लिए, अपने वीडियो प्लेयर की गाइड देखें. ज़्यादा जानकारी के लिए, टाइम किए गए मेटाडेटा को मैनेज करने से जुड़ी गाइड देखें

आईडी3 टैग से विज्ञापन इवेंट आईडी पाने के लिए, यह तरीका अपनाएं:

  1. urn:google:dai:2018 या https://aomedia.org/emsg/ID3 के साथ scheme_id_uri के हिसाब से इवेंट फ़िल्टर करें.
  2. message_data फ़ील्ड से बाइट ऐरे निकालें.

    यहां दिए गए उदाहरण में, emsg डेटा को JSON में डिकोड किया गया है:

    {
      "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
      "presentation_time": 27554,
      "timescale": 1000,
      "message_data": "ID3TXXXgoogle_1234567890123456789",
      ...
    }
    
  3. आईडी3 टैग को TXXXgoogle_{ad_event_ID} फ़ॉर्मैट में फ़िल्टर करें:

    TXXXgoogle_1234567890123456789
    

विज्ञापन इवेंट का डेटा दिखाएं

TagSegment ऑब्जेक्ट ढूंढने के लिए, यह तरीका अपनाएं:

  1. Poll ad metadata से विज्ञापन का मेटाडेटा tags ऑब्जेक्ट वापस पाएं. tags ऑब्जेक्ट, TagSegment ऑब्जेक्ट का कलेक्शन होता है.

  2. टाइप progress वाला TagSegment ऑब्जेक्ट ढूंढने के लिए, पूरे विज्ञापन इवेंट आईडी का इस्तेमाल करें.

  3. विज्ञापन के इवेंट आईडी के पहले 17 वर्णों का इस्तेमाल करके, अन्य टाइप का TagSegment ऑब्जेक्ट ढूंढें.

  4. TagSegment मिलने के बाद, ad_break_id प्रॉपर्टी का इस्तेमाल कुंजी के तौर पर करें. इससे विज्ञापन के मेटाडेटा ad_breaks ऑब्जेक्ट में AdBreak ऑब्जेक्ट को ढूंढा जा सकता है.

    यहां दिए गए उदाहरण में, AdBreak ऑब्जेक्ट को खोजा गया है:

    {
      "type":"mid",
      "duration":15,
      "ads":1
    }
    
  5. विज्ञापन ब्रेक में विज्ञापन की पोज़िशन के बारे में जानकारी दिखाने के लिए, TagSegment और AdBreak डेटा का इस्तेमाल करें. उदाहरण के लिए, Ad 1 of 3.

मीडिया की पुष्टि करने के लिए पिंग भेजना

progress टाइप को छोड़कर, हर विज्ञापन इवेंट के लिए मीडिया की पुष्टि करने वाला पिंग भेजें. Google DAI, progress इवेंट को खारिज कर देता है. इन इवेंट को बार-बार भेजने से, आपके ऐप्लिकेशन की परफ़ॉर्मेंस पर असर पड़ सकता है.

विज्ञापन इवेंट के मीडिया की पुष्टि करने वाला पूरा यूआरएल जनरेट करने के लिए, यह तरीका अपनाएं:

  1. स्ट्रीम रिस्पॉन्स से, विज्ञापन इवेंट का पूरा आईडी, media_verification_url वैल्यू में जोड़ें.

  2. पूरे यूआरएल के साथ GET अनुरोध करें:

    // media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/"
    const completeUrl = `${media_verification_url}google_5555555555123456789`;
    
    const response = await fetch(completeUrl);
    

    अगर कोड मान्य होता है, तो आपको कोड की स्थिति 202 के बारे में जानकारी देने वाला जवाब मिलता है. ऐसा न करने पर, आपको 404 गड़बड़ी का कोड मिलेगा.

स्ट्रीम ऐक्टिविटी मॉनिटर (एसएएम) का इस्तेमाल करके, सभी विज्ञापन इवेंट के पुराने लॉग की जांच की जा सकती है. ज़्यादा जानकारी के लिए, लाइव स्ट्रीम को मॉनिटर करना और उससे जुड़ी समस्या हल करना लेख पढ़ें