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

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

डीएआई दिखाने वाले पॉड

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

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

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

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

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

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

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

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

IMA CAF DAI 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 (Swift)

इन वैल्यू को 'कास्ट वेब भेजने वाले' में कॉन्फ़िगर करने के लिए, सबसे पहले ज़रूरी डेटा वाला 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 टूल इंपोर्ट करें और प्लेयर मैनेजर पाएं

स्क्रिप्ट टैग लोड होने के ठीक बाद, अपने वेब रिसीवर में CAF के लिए 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>

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

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

    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();

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

CAF लोड के अनुरोध के आधार पर पॉड सर्विंग स्ट्रीम बनाने के लिए, 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 से बदलें, ताकि CAF, विज्ञापनों के सिले गए पॉड से लाइव स्ट्रीम चला सके.

    /**
     * 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;
          });
    };

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