अपनी पसंद का डीएआई सलूशन चुनें
पॉड के तौर पर काम करने वाला डीएआई
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. सिर्फ़ डैश के लिए ज़रूरी है
स्ट्रीम में दिखाई देते हैं.
CONTENT_STREAM_MIMETYPE |
||||||||||
streamType
|
इस वैल्यू के लिए इस्तेमाल की जाने वाली स्ट्रिंग, लिटरल या कॉन्सटेंट, भेजने वाले के हिसाब से अलग-अलग होती है प्लैटफ़ॉर्म. | ||||||||||
customData
|
customData फ़ील्ड में अतिरिक्त वैल्यू का एक की-वैल्यू स्टोर होता है
ज़रूरी फ़ील्ड.
|
शुरू करने में आपकी मदद करने के लिए, यहां कुछ कोड सैंपल दिए गए हैं:
वेब
कास्ट वेब भेजने वाले में इन वैल्यू को कॉन्फ़िगर करने के लिए, सबसे पहले
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
}
सीएसी टूल
Cast Command और Control में इन वैल्यू को कॉन्फ़िगर करने के लिए टूल में, मीडिया लोड करें टैब पर क्लिक करें और लोड करने के लिए कस्टम लोड अनुरोध प्रकार. इसके बाद, टेक्स्ट एरिया में 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()
का इस्तेमाल करके
स्ट्रीम का आईडी फिर से पाएं और उसे अपने ManifestUrl में डालें
[[STREAMID]]
. इसके बाद, मौजूदा 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 टूल.