IMA डीएआई SDK टूल का इस्तेमाल शुरू करना

अपनी पसंद का डीएआई सलूशन चुनें

पॉड के तौर पर काम करने वाला डीएआई

IMA SDK, मल्टीमीडिया विज्ञापनों को आपकी वेबसाइटों और ऐप्लिकेशन में आसानी से इंटिग्रेट कर सकते हैं.

IMA SDK, वीएएसटी का पालन करने वाले किसी भी विज्ञापन सर्वर से विज्ञापनों का अनुरोध कर सकते हैं. साथ ही, वे आपके ऐप्लिकेशन में विज्ञापन चलाने की सुविधा को मैनेज कर सकते हैं.

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

इस गाइड में सीएएफ़ के लिए IMA डीएआई SDK टूल का इस्तेमाल करके, लाइव डीएआई पॉड सर्विंग स्ट्रीम चलाने का तरीका बताया गया है.

इस गाइड का इस्तेमाल करने से पहले, Chromecast ऐप्लिकेशन फ़्रेमवर्क के वेब रिसीवर प्रोटोकॉल के बारे में जान लें. इस गाइड में, सीएएफ़ के रिसीवर के सिद्धांतों के बारे में बुनियादी जानकारी दी गई है. जैसे, मैसेज इंटरसेप्टर और mediaInformation ऑब्जेक्ट. साथ ही, सीएएफ़ भेजने वाले को एम्युलेट करने के लिए, कास्ट कमांड और कंट्रोल टूल के इस्तेमाल के बारे में जानकारी शामिल है.

IMA डीएआई पॉड विज्ञापन दिखाने की सुविधा का इस्तेमाल करने के लिए, आपको पॉड सर्विंग पार्टनर के साथ काम करना होगा. साथ ही, आपके पास Ad Manager 360 बेहतर खाता होना भी ज़रूरी है. अगर आपके पास Ad Manager खाता है, तो ज़्यादा जानकारी के लिए अपने खाता मैनेजर से संपर्क करें. Ad Manager में साइन अप करने के बारे में जानकारी पाने के लिए, Ad Manager सहायता केंद्र पर जाएं.

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

IMA डीएआई पॉडकिंग के बारे में खास जानकारी

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

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

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

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

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

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

फ़ील्ड विषय सूची
contentId इस मीडिया आइटम के लिए यूनीक आइडेंटिफ़ायर.

CONTENT_ID

contentUrl ज़रूरी नहीं. डीएआई स्ट्रीम लोड नहीं होने पर, बैकअप स्ट्रीम यूआरएल चलाया जाएगा.

BACKUP_STREAM_URL

contentType ज़रूरी नहीं. कॉन्टेंट का बैकअप लेने के लिए बनाई गई स्ट्रीम का Mimetype. सिर्फ़ DASH स्ट्रीम के लिए ज़रूरी है.

CONTENT_STREAM_MIMETYPE

streamType इस वैल्यू के लिए इस्तेमाल की जाने वाली स्ट्रिंग, लिटरल या कॉन्सटेंट, भेजने वाले प्लैटफ़ॉर्म के हिसाब से अलग-अलग होती है.
customData customData फ़ील्ड में, अतिरिक्त ज़रूरी फ़ील्ड का एक की-वैल्यू स्टोर होता है.
फ़ील्ड विषय सूची
manifestUrl वीडियो स्ट्रीम का वह यूआरएल जो मेनिफ़ेस्ट में बदलाव करने वाले व्यक्ति या थर्ड पार्टी पार्टनर से मिला है. अनुरोध करने से पहले, आपको IMA डीएआई SDK टूल से मिला स्ट्रीम आईडी डालना होगा. इस सैंपल में, मेनिफ़ेस्ट यूआरएल में [[STREAMID]] नाम का एक प्लेसहोल्डर शामिल है. कोई अनुरोध करने से पहले, इसे स्ट्रीम आईडी से बदल दिया जाता है.

MANIFEST_URL

networkCode आपके Google Ad Manager 360 खाते का नेटवर्क कोड.

NETWORK_CODE

customAssetKey कस्टम ऐसेट कुंजी, जो Google Ad Manager 360 में पॉड सर्विंग इवेंट की पहचान करती है. कुछ मामलों में, आपको यह मेनिफ़ेस्ट फ़ाइल में बदलाव करने वाले टूल या तीसरे पक्ष के पॉड की मदद से विज्ञापन दिखाने वाले पार्टनर से मिल सकता है.

CUSTOM_ASSET_KEY

apiKey IMA डीएआई SDK टूल से स्ट्रीम आईडी वापस पाने के लिए, एक वैकल्पिक एपीआई पासकोड.

API_KEY

शुरू करने में आपकी मदद करने के लिए, यहां कुछ कोड सैंपल दिए गए हैं:

वेब

कास्ट वेब भेजने वाले में इन वैल्यू को कॉन्फ़िगर करने के लिए, सबसे पहले ज़रूरी डेटा के साथ MediaInfo ऑब्जेक्ट बनाएं. इसके बाद, वेब रिसीवर पर लोड करने का अनुरोध करें.

// Create mediaInfo object
const mediaInfo = new chrome.cast.media.MediaInfo("CONTENT_ID");
mediaInfo.contentUrl = "BACKUP_STREAM_URL";
mediaInfo.contentType = "CONTENT_STREAM_MIMETYPE";
mediaInfo.streamType = chrome.cast.media.StreamType.LIVE;
mediaInfo.customData = {
manifestUrl: "MANIFEST_URL",
networkCode: "NETWORK-CODE",
customAssetKey: "CUSTOM_ASSET_KEY",
apiKey: "API_KEY"
};

// Make load request to cast web receiver
const castSession = cast.framework.CastContext.getInstance().getCurrentSession();
const request = new chrome.cast.media.LoadRequest(mediaInfo);
castSession.loadMedia(request).then(
  () => { console.log('Load succeed'); },
  (errorCode) => { console.log('Error code: ' + errorCode); });

Android

कास्ट वेब भेजने वाले में इन वैल्यू को कॉन्फ़िगर करने के लिए, सबसे पहले ज़रूरी डेटा के साथ MediaInfo ऑब्जेक्ट बनाएं. इसके बाद, वेब रिसीवर पर लोड करने का अनुरोध करें.

JSONObject customData = new JSONObject()?
  .put("manifestUrl", "MANIFEST_URL")
  .put("networkCode", "NETWORK-CODE")
  .put("customAssetKey", "CUSTOM_ASSET_KEY")
  .put("apiKey", "API_KEY");
MediaInfo mediaInfo = MediaInfo.Builder("CONTENT_ID")
  .setContentUrl("BACKUP_STREAM_URL")
  .setContentType("CONTENT_STREAM_MIMETYPE")
  .setStreamType(MediaInfo.STREAM_TYPE_LIVE)
  .setCustomData(customData)
  .build();

RemoteMediaClient remoteMediaClient = mCastSession.getRemoteMediaClient();
remoteMediaClient.load(new MediaLoadRequestData.Builder().setMediaInfo(mediaInfo).build());

iOS (Obj-C)

कास्ट वेब भेजने वाले में इन वैल्यू को कॉन्फ़िगर करने के लिए, सबसे पहले ज़रूरी डेटा के साथ GCKMediaInformation ऑब्जेक्ट बनाएं. इसके बाद, वेब रिसीवर पर लोड करने का अनुरोध करें.

NSURL url = [NSURL URLWithString:@"BACKUP_STREAM_URL"];
NSDictionary *customData = @{
  @"manifestUrl": @"MANIFEST_URL",
  @"networkCode": @"NETWORK-CODE",
  @"customAssetKey": @"CUSTOM_ASSET_KEY",
  @"apiKey": @"API_KEY"};
mediaInfoBuilder.customData = customData;

GCKMediaInformationBuilder *mediaInfoBuilder =
  [[GCKMediaInformationBuilder alloc] initWithContentID: @"CONTENT_ID"];
mediaInfoBuilder.contentURL = url;
mediaInfoBuilder.contentType = @"CONTENT_STREAM_MIMETYPE";
mediaInfoBuilder.streamType = GCKMediaStreamTypeLive;
mediaInfoBuilder.customData = customData;
self.mediaInformation = [mediaInfoBuilder build];

GCKRequest *request = [self.sessionManager.currentSession.remoteMediaClient loadMedia:self.mediaInformation];
if (request != nil) {
  request.delegate = self;
}

iOS (स्विफ़्ट)

कास्ट वेब भेजने वाले में इन वैल्यू को कॉन्फ़िगर करने के लिए, सबसे पहले ज़रूरी डेटा के साथ GCKMediaInformation ऑब्जेक्ट बनाएं. इसके बाद, वेब रिसीवर पर लोड करने का अनुरोध करें.

let url = URL.init(string: "BACKUP_STREAM_URL")
guard let mediaURL = url else {
  print("invalid mediaURL")
  return
}

let customData = [
  "liveConfigID": "MANIFEST_URL",
  "networkCode": "NETWORK-CODE",
  "customAssetKey": "CUSTOM_ASSET_KEY",
  "region": "API_KEY"
]

let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentId: "CONTENT_ID")
mediaInfoBuilder.contentURL = mediaUrl
mediaInfoBuilder.contentType = @"CONTENT_STREAM_MIMETYPE"
mediaInfoBuilder.streamType = GCKMediaStreamType.Live
mediaInfoBuilder.customData = customData
mediaInformation = mediaInfoBuilder.build()

guard let mediaInfo = mediaInformation else {
  print("invalid mediaInformation")
  return
}

if let request = sessionManager.currentSession?.remoteMediaClient?.loadMedia
(mediaInfo) {
  request.delegate = self
}

सीएसी टूल

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

{
  "media": {
    "contentId": "CONTENT_ID",
    "contentUrl": "BACKUP_STREAM_URL",
    "contentType": ""CONTENT_STREAM_MIMETYPE"",
    "streamType": "LIVE",
    "customData": {
      "liveConfigID": "MANIFEST_URL",
      "networkCode": "NETWORK-CODE",
      "customAssetKey": "CUSTOM_ASSET_KEY",
      "oAuthToken": "API_KEY"
    }
  }
}

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

एक सामान्य CAF रिसीवर बनाएं

पसंद के मुताबिक वेब रिसीवर बनाएं, जैसा कि सीएएफ़ SDK टूल कस्टम वेब रिसीवर गाइड में बताया गया है.

पैसे पाने वाले व्यक्ति का कोड इस तरह दिखना चाहिए:

<html>
<head>
  <script
      src="//www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js">
  </script>
</head>
<body>
  <cast-media-player></cast-media-player>
  <script>
    // ...
  </script>
</body>
</html>

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

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

<html>
<head>
  <script
      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>

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

IMA स्ट्रीम मैनेजर शुरू करें.

<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>

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

सीएएफ़ को मीडिया आइटम भेजने से पहले, मैसेज लोड करें इंटरसेप्टर की मदद से स्ट्रीम का अनुरोध करें.

    const castContext = cast.framework.CastReceiverContext.getInstance();
    const playerManager = castContext.getPlayerManager();
    const streamManager = new google.ima.cast.dai.api.StreamManager();

    /**
     * Creates a livestream request object for a pod serving stream.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {StreamRequest} an IMA stream request
     */
    const createStreamRequest = (castRequest) => { /* ... */};

    /**
     * Initates a DAI stream request for the final stream manifest.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {Promise<LoadRequestData>} a promise that resolves to an updated castRequest, containing the DAI stream manifest
     */
    const createDAICastRequest = (castRequest) => {
        return streamManager.requestStream(castRequest, createStreamRequest(castRequest))
          .then((castRequestWithPodStreamData) => {
            console.log('Successfully made DAI stream request.');
            // ...
            return castRequestWithPodStreamData;
          })
          .catch((error) => {
            console.log('Failed to make DAI stream request.');
            // CAF will automatically fallback to the content URL
            // that it can read from the castRequest object.
            return castRequest;
          });
    };

    playerManager.setMessageInterceptor(
        cast.framework.messages.MessageType.LOAD, createDAICastRequest);

    castContext.start();

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

सीएएफ़ लोड करने के अनुरोध के आधार पर, पॉड सर्विंग स्ट्रीम बनाने के लिए, createStreamRequest फ़ंक्शन को पूरा करें.

    /**
     * Creates a livestream request object for a pod serving stream.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {StreamRequest} an IMA stream request
     */
    const createStreamRequest = (castRequest) => {

      const streamRequest = new google.ima.cast.dai.api.PodStreamRequest();
      const customData = castRequest.media.customData;

      streamRequest.customAssetKey = customData.customAssetKey;
      streamRequest.networkCode = customData.networkCode;
      streamRequest.apiKey = customData.apiKey;

      return streamRequest;
    };

कॉन्टेंट यूआरएल को मेनिफ़ेस्ट यूआरएल और स्ट्रीम आईडी से बदलें

अगर स्ट्रीम का आपका अनुरोध पूरा हो जाता है, तो स्ट्रीम का आईडी पाने के लिए streamManager.getStreamId() का इस्तेमाल करें. इसके बाद, इसे [[STREAMID]] की जगह अपने ManifestUrl में डालें. इसके बाद, मौजूदा contentUrl को नए manifestUrl से बदलें, ताकि सीएएफ़, विज्ञापनों के स्टिले हुए पॉड से लाइव स्ट्रीम कर सके.

    /**
     * Initates a DAI stream request for the final stream manifest.
     * @param {!LoadRequestData} castRequest The request object from the cast sender
     * @return {Promise<LoadRequestData>} a promise that resolves to an updated castRequest, containing the DAI stream manifest
     */
    const createDAICastRequest = (castRequest) => {
        return streamManager.requestStream(castRequest, createStreamRequest(castRequest))
          .then((castRequestWithPodStreamData) => {
            console.log('Successfully made DAI stream request.');
            const media = castRequestWithPodStreamData.media;
                const manifestUrl = media.customData.manifestUrl || "";
                if (manifestUrl) {
                    console.log('Replacing the contentURL with the manifest URL and stream ID');
                    const streamId = streamManager.getStreamId();
                    castRequestWithPodStreamData.media.contentUrl = manifestUrl.replace('[[STREAMID]]', streamId);

            return castRequestWithPodStreamData;
          })
          .catch((error) => {
            console.log('Failed to make DAI stream request.');
            // CAF will automatically fallback to the content URL
            // that it can read from the castRequest object.
            return castRequest;
          });
    };

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