डीएआई की पूरी सेवा के साथ सेट अप करना

प्लैटफ़ॉर्म चुनें: HTML5 Android iOS tvOS Cast Roku

इस गाइड में, IMA CAF DAI SDK का इस्तेमाल करके, डीएआई स्ट्रीम चलाने का तरीका बताया गया है. अगर आपको इंटिग्रेशन का कोई सैंपल देखना है या उसके साथ आगे बढ़ना है, तो उदाहरण डाउनलोड करें.

इस गाइड का इस्तेमाल करने से पहले, Chromecast ऐप्लिकेशन फ़्रेमवर्क के वेब रिसीवर प्रोटोकॉल के बारे में अच्छी तरह जान लें. इस गाइड में यह माना गया है कि आपको सीएएफ़ रिसीवर के कॉन्सेप्ट की बुनियादी जानकारी है. जैसे, मैसेज इंटरसेप्टर और mediaInformation ऑब्जेक्ट. साथ ही, आपको सीएएफ़ सेंडर को एम्युलेट करने के लिए, Cast Command and Control टूल का इस्तेमाल करने की जानकारी है.

आईएमए डीएआई का इस्तेमाल करने के लिए, आपके पास Ad Manager 360 खाता होना चाहिए. अगर आपके पास Ad Manager खाता है, तो ज़्यादा जानकारी के लिए अपने खाता मैनेजर से संपर्क करें. Ad Manager के लिए साइन अप करने के बारे में जानकारी पाने के लिए, Ad Manager सहायता केंद्र पर जाएं.

अन्य प्लैटफ़ॉर्म के साथ इंटिग्रेट करने या IMA क्लाइंट-साइड SDK टूल इस्तेमाल करने के बारे में जानकारी पाने के लिए, Interactive Media Ads SDK देखें.

CAF DAI की खास जानकारी

IMA CAF DAI SDK का इस्तेमाल करके डीएआई लागू करने के लिए, दो मुख्य कॉम्पोनेंट की ज़रूरत होती है. इनके बारे में इस गाइड में बताया गया है:

  • StreamRequest: यह एक ऐसा ऑब्जेक्ट है जो Google के विज्ञापन सर्वर को स्ट्रीम का अनुरोध भेजता है. स्ट्रीम के अनुरोध मुख्य रूप से दो तरह के होते हैं:

    • LiveStreamRequest: इससे ऐसेट कुंजी के साथ-साथ अन्य वैकल्पिक पैरामीटर के बारे में जानकारी मिलती है.
    • VODStreamRequest: यह कॉन्टेंट सोर्स आईडी, वीडियो का आईडी, और अन्य वैकल्पिक पैरामीटर के बारे में बताता है.
    • दोनों तरह के अनुरोधों में, एपीआई पासकोड शामिल किया जा सकता है. इसकी ज़रूरत, चुनिंदा स्ट्रीम को ऐक्सेस करने के लिए होती है. साथ ही, Google Ad Manager नेटवर्क कोड भी शामिल किया जा सकता है. इसकी ज़रूरत, आईएमए एसडीके को विज्ञापन आइडेंटिफ़ायर मैनेज करने के लिए होती है. ऐसा Google Ad Manager की सेटिंग में बताया गया है.
  • StreamManager: यह एक ऐसा ऑब्जेक्ट है जो वीडियो स्ट्रीम और आईएमए डीएआई एसडीके के बीच कम्यूनिकेशन को मैनेज करता है. जैसे, ट्रैकिंग पिंग को ट्रिगर करना और स्ट्रीम इवेंट को पब्लिशर को फ़ॉरवर्ड करना.

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

  • Cast Developer Console खाता, जिसमें टेस्ट के लिए इस्तेमाल किया जाने वाला डिवाइस रजिस्टर हो.
  • होस्ट किया गया वेब रिसीवर ऐप्लिकेशन, जो आपके Cast Developer Console में रजिस्टर हो. साथ ही, इस गाइड में दिए गए कोड को होस्ट करने के लिए, इसमें बदलाव किया जा सकता हो.
  • एक सेंडर ऐप्लिकेशन, जिसे आपके वेब रिसीवर ऐप्लिकेशन का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है. इस उदाहरण में, सेंडर के तौर पर Cast Command and Control टूल का इस्तेमाल किया गया है.

भेजने वाले के MediaInfo ऑब्जेक्ट कॉन्फ़िगर करना

सबसे पहले, अपने सेंडर ऐप्लिकेशन के MediaInfo ऑब्जेक्ट को कॉन्फ़िगर करें, ताकि उसमें ये फ़ील्ड शामिल किए जा सकें:

contentId इस मीडिया आइटम के लिए यूनीक आइडेंटिफ़ायर
contentUrl अगर डीएआई StreamRequest किसी वजह से काम नहीं करता है, तो फ़ॉलबैक स्ट्रीम यूआरएल लोड किया जाएगा
streamType लाइव स्ट्रीम के लिए, यह वैल्यू `LIVE` पर सेट होनी चाहिए. वीओडी स्ट्रीम के लिए, यह वैल्यू `BUFFERED` पर सेट होनी चाहिए
customData assetKey सिर्फ़ लाइव स्ट्रीम. इससे उस लाइव स्ट्रीम की पहचान की जाती है जिसे लोड किया जाना है
contentSourceId सिर्फ़ वीओडी स्ट्रीम. इससे उस मीडिया फ़ीड की पहचान होती है जिसमें अनुरोध की गई स्ट्रीम शामिल है.
videoId सिर्फ़ वीओडी स्ट्रीम. यह तय किए गए मीडिया फ़ीड में, अनुरोध की गई स्ट्रीम की पहचान करता है.
networkCode (ज़रूरी नहीं) आपका Google Ad Manager नेटवर्क कोड.
ApiKey एक वैकल्पिक एपीआई पासकोड, जिसकी ज़रूरत आईएमए डीएआई एसडीके से स्ट्रीम का यूआरएल पाने के लिए पड़ सकती है
senderCanSkip यह एक बूलियन वैल्यू है, जिससे रिसीवर को यह पता चलता है कि भेजने वाले डिवाइस में, स्किप करने का बटन दिखाने की सुविधा है या नहीं. इससे स्किप किए जा सकने वाले विज्ञापनों के लिए सहायता चालू की जा सकती है

Cast कमांड और कंट्रोल टूल में इन वैल्यू को कॉन्फ़िगर करने के लिए, Load Media टैब पर क्लिक करें. इसके बाद, कस्टम लोड अनुरोध टाइप को LOAD पर सेट करें. इसके बाद, टेक्स्ट एरिया में मौजूद JSON डेटा को इनमें से किसी एक JSON ऑब्जेक्ट से बदलें:

लाइव

{
  "media": {
    "contentId": "bbb",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
    "streamType": "LIVE",
    "customData": {
      "assetKey": "c-rArva4ShKVIAkNfy6HUQ",
      "networkCode": "21775744923",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

वीओडी

{
  "media": {
    "contentId": "tos",
    "contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
    "streamType": "BUFFERED",
    "customData": {
      "contentSourceId": "2548831",
      "videoId": "tears-of-steel",
      "networkCode": "21775744923",
      "ApiKey": "",
      "senderCanSkip": true
    }
  },
  "credentials": "testCredentials"
}

इस कस्टम लोड अनुरोध ऑब्जेक्ट को रिसीवर को भेजा जा सकता है, ताकि इन चरणों की जांच की जा सके.

एक बेसिक सीएएफ़ रिसीवर बनाना

CAF SDK के बेसिक रिसीवर की गाइड का पालन करके, एक बेसिक वेब रिसीवर बनाएं.

रिसीवर का कोड कुछ ऐसा दिखेगा:

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    cast.framework.CastReceiverContext.getInstance().start();
  </script>
</body>
</html>

आईएमए डीएआई एसडीके इंपोर्ट करना और प्लेयर मैनेजर पाना

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

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();

    castContext.start();
  </script>
</body>
</html>

आईएमए स्ट्रीम मैनेजर को शुरू करना

CAF डीएआई एसडीके के स्ट्रीम मैनेजर को शुरू करें.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    castContext.start();
  </script>
</body>
</html>

लोड मैसेज इंटरसेप्टर बनाना

CAF DAI SDK, CAF लोड मैसेज इंटरसेप्टर का इस्तेमाल करता है, ताकि स्ट्रीम के अनुरोध किए जा सकें और कॉन्टेंट यूआरएल को फ़ाइनल DAI स्ट्रीम से बदला जा सके. मैसेज इंटरसेप्टर, streamManager.requestStream() को कॉल करता है. यह विज्ञापन के लिए ब्रेक सेट करने, स्ट्रीम का अनुरोध करने, और मौजूदा contentURL को बदलने का काम करता है.

लोड मैसेज इंटरसेप्टर सिर्फ़ एक हो सकता है. इसलिए, अगर आपके ऐप्लिकेशन को इंटरसेप्टर का इस्तेमाल करना है, तो आपको उसी कॉलबैक में कोई भी कस्टम फ़ंक्शन शामिल करना होगा.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => null;

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                this.broadcast('Stream request successful.');
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

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

सीएएफ़ डीएआई इंटिग्रेशन को पूरा करने के लिए, आपको स्ट्रीम के लिए अनुरोध करना होगा. इसके लिए, आपको उस डेटा का इस्तेमाल करना होगा जो भेजने वाले के mediaInfo ऑब्जेक्ट में शामिल था.

<html>
<head>
  <script type="text/javascript"
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js"></script>
  <script src="//imasdk.googleapis.com/js/sdkloader/cast_dai.js"></script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    const getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imaRequestData.networkCode) {
        streamRequest.networkCode = imaRequestData.networkCode;
      }
      if (streamRequest && imaRequestData.ApiKey) {
        streamRequest.ApiKey = imaRequestData.ApiKey;
      }
      if (streamRequest && imaRequestData.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, (request) => {
          return streamManager.requestStream(request, getStreamRequest(request))
              .then((request) => {
                return Promise.resolve(request);
              })
              .catch((error) => {
                this.broadcast('Stream request failed.');
                return Promise.resolve(request);
              });
        });

    castContext.start();
  </script>
</body>
</html>

अब Google के CAF DAI SDK की मदद से, डीएआई स्ट्रीम का अनुरोध किया जा सकता है और उन्हें चलाया जा सकता है. SDK टूल की अन्य बेहतर सुविधाओं के बारे में जानने के लिए, अन्य गाइड देखें या रिसीवर ऐप्लिकेशन के सैंपल डाउनलोड करें.