আপনার পছন্দের DAI সমাধানটি নির্বাচন করুন।
সম্পূর্ণ পরিষেবা DAI
এই নির্দেশিকাটি IMA CAF DAI SDK ব্যবহার করে একটি DAI স্ট্রিম কীভাবে প্লে করতে হয় তা দেখায়। আপনি যদি একটি সম্পূর্ণ নমুনা ইন্টিগ্রেশন দেখতে বা অনুসরণ করতে চান, তাহলে উদাহরণটি ডাউনলোড করুন ।
এই নির্দেশিকাটি ব্যবহার করার আগে, Chromecast Application Framework-এর Web Receiver প্রোটোকলের সাথে ভালোভাবে পরিচিত হয়ে নিন। এই নির্দেশিকাটি ধরে নেয় যে, আপনার CAF রিসিভারের ধারণা, যেমন মেসেজ ইন্টারসেপ্টর এবং mediaInformation অবজেক্ট, সম্পর্কে প্রাথমিক ধারণা রয়েছে এবং সেইসাথে CAF প্রেরককে অনুকরণ করার জন্য Cast Command and Control টুলটি ব্যবহার করার অভিজ্ঞতাও আছে।
IMA DAI ব্যবহার করার জন্য, আপনার একটি Ad Manager 360 অ্যাকাউন্ট থাকতে হবে। যদি আপনার একটি Ad Manager অ্যাকাউন্ট থাকে, তবে আরও বিস্তারিত জানতে আপনার অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করুন। Ad Manager-এ সাইন আপ করার বিষয়ে তথ্যের জন্য, Ad Manager হেল্প সেন্টার দেখুন।
অন্যান্য প্ল্যাটফর্মের সাথে ইন্টিগ্রেশন বা IMA ক্লায়েন্ট-সাইড SDK ব্যবহারের তথ্যের জন্য, ইন্টারেক্টিভ মিডিয়া অ্যাডস SDK দেখুন।
CAF DAI সংক্ষিপ্ত বিবরণ
এই নির্দেশিকায় যেমন দেখানো হয়েছে, IMA CAF DAI SDK ব্যবহার করে DAI বাস্তবায়নে দুটি প্রধান উপাদান জড়িত:
StreamRequest: একটি অবজেক্ট যা গুগলের বিজ্ঞাপন সার্ভারগুলিতে একটি স্ট্রিম অনুরোধ নির্ধারণ করে। স্ট্রিম অনুরোধ প্রধানত দুই প্রকারের হয়:-
LiveStreamRequest: একটি অ্যাসেট কী (Asset Key) এবং অন্যান্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করে। -
VODStreamRequest: একটি কন্টেন্ট সোর্স আইডি , একটি ভিডিও আইডি এবং অন্যান্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করে। - উভয় ধরনের অনুরোধেই ঐচ্ছিকভাবে নির্দিষ্ট স্ট্রিম অ্যাক্সেস করার জন্য প্রয়োজনীয় একটি এপিআই কী এবং গুগল অ্যাড ম্যানেজার সেটিংসে নির্দিষ্ট করা বিজ্ঞাপন শনাক্তকারীগুলো পরিচালনা করার জন্য আইএমএ এসডিকে-এর একটি গুগল অ্যাড ম্যানেজার নেটওয়ার্ক কোড অন্তর্ভুক্ত করা যেতে পারে।
-
StreamManager: একটি অবজেক্ট যা ভিডিও স্ট্রিম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ট্র্যাকিং পিং পাঠানো এবং স্ট্রিম ইভেন্টগুলোকে পাবলিশারের কাছে ফরোয়ার্ড করা।
পূর্বশর্ত
- একটি নিবন্ধিত টেস্ট ডিভাইসসহ কাস্ট ডেভেলপার কনসোল অ্যাকাউন্ট।
- একটি হোস্টেড ওয়েব রিসিভার অ্যাপ যা আপনার কাস্ট ডেভেলপার কনসোলে নিবন্ধিত এবং যা এই নির্দেশিকায় প্রদত্ত কোড হোস্ট করার জন্য পরিবর্তন করা যেতে পারে।
- একটি প্রেরক অ্যাপ যা আপনার ওয়েব রিসিভার অ্যাপ ব্যবহার করার জন্য কনফিগার করা হয়েছে। এই উদাহরণে প্রেরক হিসেবে কাস্ট কমান্ড অ্যান্ড কন্ট্রোল টুল ব্যবহার করা হয়েছে।
প্রেরকের MediaInfo অবজেক্টগুলি কনফিগার করুন
প্রথমে, আপনার প্রেরক অ্যাপের MediaInfo অবজেক্টটি নিম্নলিখিত ফিল্ডগুলি অন্তর্ভুক্ত করার জন্য কনফিগার করুন:
contentId | এই মিডিয়া আইটেমটির জন্য একটি অনন্য শনাক্তকারী | |
contentUrl | যেকোনো কারণে DAI StreamRequest ব্যর্থ হলে লোড করার জন্য ফলব্যাক স্ট্রিম URL। | |
streamType | লাইভ স্ট্রিমের জন্য এই মানটি `LIVE`-এ সেট করতে হবে। VOD স্ট্রিমের জন্য এই মানটি `BUFFERED`-এ সেট করতে হবে। | |
customData | assetKey | শুধুমাত্র লাইভস্ট্রিম। লোড করার জন্য লাইভস্ট্রিমটি শনাক্ত করে। |
contentSourceId | শুধুমাত্র VOD স্ট্রিম। অনুরোধকৃত স্ট্রিমটি যে মিডিয়া ফিডে রয়েছে, তা শনাক্ত করে। | |
videoId | শুধুমাত্র VOD স্ট্রিম। নির্দিষ্ট মিডিয়া ফিডের মধ্যে অনুরোধকৃত স্ট্রিমটি শনাক্ত করে। | |
networkCode | (ঐচ্ছিক) আপনার গুগল অ্যাড ম্যানেজার নেটওয়ার্ক কোড। | |
ApiKey | একটি ঐচ্ছিক এপিআই কী, যা IMA DAI SDK থেকে স্ট্রিম ইউআরএল পুনরুদ্ধার করার জন্য প্রয়োজন হতে পারে। | |
senderCanSkip | একটি বুলিয়ান মান, যা প্রাপককে জানিয়ে দেয় যে প্রেরক ডিভাইসে একটি স্কিপ বাটন প্রদর্শনের ক্ষমতা আছে কি না, যার ফলে স্কিপযোগ্য বিজ্ঞাপনগুলির জন্য সমর্থন চালু হয়। | |
কাস্ট কমান্ড অ্যান্ড কন্ট্রোল টুলে এই মানগুলি কনফিগার করতে, 'লোড মিডিয়া' ট্যাবে ক্লিক করুন এবং কাস্টম লোড রিকোয়েস্ট টাইপটি ' 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 রিসিভার তৈরি করুন
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>
IMA DAI SDK ইম্পোর্ট করুন এবং প্লেয়ার ম্যানেজারটি পান।
আপনার ওয়েব রিসিভারে CAF-এর জন্য IMA DAI SDK ইম্পোর্ট করতে, 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 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();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
লোড মেসেজ ইন্টারসেপ্টর তৈরি করুন
CAF DAI SDK, স্ট্রিম রিকোয়েস্ট করতে এবং কন্টেন্ট URL-কে চূড়ান্ত DAI স্ট্রিম দিয়ে প্রতিস্থাপন করতে CAF লোড মেসেজ ইন্টারসেপ্টর ব্যবহার করে। এই মেসেজ ইন্টারসেপ্টর 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>
স্ট্রিম অনুরোধ তৈরি করুন
আপনার CAF DAI ইন্টিগ্রেশন সম্পূর্ণ করতে, প্রেরকের কাছ থেকে প্রাপ্ত 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>
আপনি এখন গুগলের CAF DAI SDK ব্যবহার করে DAI স্ট্রিম অনুরোধ এবং প্লেব্যাক করতে পারবেন। SDK-এর আরও উন্নত বৈশিষ্ট্য সম্পর্কে জানতে, অন্যান্য গাইডগুলি দেখুন অথবা আমাদের নমুনা রিসিভার অ্যাপ্লিকেশনগুলি ডাউনলোড করুন ।
,আপনার পছন্দের DAI সমাধানটি নির্বাচন করুন।
সম্পূর্ণ পরিষেবা DAI
এই নির্দেশিকাটি IMA CAF DAI SDK ব্যবহার করে একটি DAI স্ট্রিম কীভাবে প্লে করতে হয় তা দেখায়। আপনি যদি একটি সম্পূর্ণ নমুনা ইন্টিগ্রেশন দেখতে বা অনুসরণ করতে চান, তাহলে উদাহরণটি ডাউনলোড করুন ।
এই নির্দেশিকাটি ব্যবহার করার আগে, Chromecast Application Framework-এর Web Receiver প্রোটোকলের সাথে ভালোভাবে পরিচিত হয়ে নিন। এই নির্দেশিকাটি ধরে নেয় যে, আপনার CAF রিসিভারের ধারণা, যেমন মেসেজ ইন্টারসেপ্টর এবং mediaInformation অবজেক্ট, সম্পর্কে প্রাথমিক ধারণা রয়েছে এবং সেইসাথে CAF প্রেরককে অনুকরণ করার জন্য Cast Command and Control টুলটি ব্যবহার করার অভিজ্ঞতাও আছে।
IMA DAI ব্যবহার করার জন্য, আপনার একটি Ad Manager 360 অ্যাকাউন্ট থাকতে হবে। যদি আপনার একটি Ad Manager অ্যাকাউন্ট থাকে, তবে আরও বিস্তারিত জানতে আপনার অ্যাকাউন্ট ম্যানেজারের সাথে যোগাযোগ করুন। Ad Manager-এ সাইন আপ করার বিষয়ে তথ্যের জন্য, Ad Manager হেল্প সেন্টার দেখুন।
অন্যান্য প্ল্যাটফর্মের সাথে ইন্টিগ্রেশন বা IMA ক্লায়েন্ট-সাইড SDK ব্যবহারের তথ্যের জন্য, ইন্টারেক্টিভ মিডিয়া অ্যাডস SDK দেখুন।
CAF DAI সংক্ষিপ্ত বিবরণ
এই নির্দেশিকায় যেমন দেখানো হয়েছে, IMA CAF DAI SDK ব্যবহার করে DAI বাস্তবায়নে দুটি প্রধান উপাদান জড়িত:
StreamRequest: একটি অবজেক্ট যা গুগলের বিজ্ঞাপন সার্ভারগুলিতে একটি স্ট্রিম অনুরোধ নির্ধারণ করে। স্ট্রিম অনুরোধ প্রধানত দুই প্রকারের হয়:-
LiveStreamRequest: একটি অ্যাসেট কী (Asset Key) এবং অন্যান্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করে। -
VODStreamRequest: একটি কন্টেন্ট সোর্স আইডি , একটি ভিডিও আইডি এবং অন্যান্য ঐচ্ছিক প্যারামিটার নির্দিষ্ট করে। - উভয় ধরনের অনুরোধেই ঐচ্ছিকভাবে নির্দিষ্ট স্ট্রিম অ্যাক্সেস করার জন্য প্রয়োজনীয় একটি এপিআই কী এবং গুগল অ্যাড ম্যানেজার সেটিংসে নির্দিষ্ট করা বিজ্ঞাপন শনাক্তকারীগুলো পরিচালনা করার জন্য আইএমএ এসডিকে-এর একটি গুগল অ্যাড ম্যানেজার নেটওয়ার্ক কোড অন্তর্ভুক্ত করা যেতে পারে।
-
StreamManager: একটি অবজেক্ট যা ভিডিও স্ট্রিম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ট্র্যাকিং পিং পাঠানো এবং স্ট্রিম ইভেন্টগুলোকে পাবলিশারের কাছে ফরোয়ার্ড করা।
পূর্বশর্ত
- একটি নিবন্ধিত টেস্ট ডিভাইসসহ কাস্ট ডেভেলপার কনসোল অ্যাকাউন্ট।
- একটি হোস্টেড ওয়েব রিসিভার অ্যাপ যা আপনার কাস্ট ডেভেলপার কনসোলে নিবন্ধিত এবং যা এই নির্দেশিকায় প্রদত্ত কোড হোস্ট করার জন্য পরিবর্তন করা যেতে পারে।
- একটি প্রেরক অ্যাপ যা আপনার ওয়েব রিসিভার অ্যাপ ব্যবহার করার জন্য কনফিগার করা হয়েছে। এই উদাহরণে প্রেরক হিসেবে কাস্ট কমান্ড অ্যান্ড কন্ট্রোল টুল ব্যবহার করা হয়েছে।
প্রেরকের MediaInfo অবজেক্টগুলি কনফিগার করুন
প্রথমে, আপনার প্রেরক অ্যাপের MediaInfo অবজেক্টটি নিম্নলিখিত ফিল্ডগুলি অন্তর্ভুক্ত করার জন্য কনফিগার করুন:
contentId | এই মিডিয়া আইটেমটির জন্য একটি অনন্য শনাক্তকারী | |
contentUrl | যেকোনো কারণে DAI StreamRequest ব্যর্থ হলে লোড করার জন্য ফলব্যাক স্ট্রিম URL। | |
streamType | লাইভ স্ট্রিমের জন্য এই মানটি `LIVE`-এ সেট করতে হবে। VOD স্ট্রিমের জন্য এই মানটি `BUFFERED`-এ সেট করতে হবে। | |
customData | assetKey | শুধুমাত্র লাইভস্ট্রিম। লোড করার জন্য লাইভস্ট্রিমটি শনাক্ত করে। |
contentSourceId | শুধুমাত্র VOD স্ট্রিম। অনুরোধকৃত স্ট্রিমটি যে মিডিয়া ফিডে রয়েছে, তা শনাক্ত করে। | |
videoId | শুধুমাত্র VOD স্ট্রিম। নির্দিষ্ট মিডিয়া ফিডের মধ্যে অনুরোধকৃত স্ট্রিমটি শনাক্ত করে। | |
networkCode | (ঐচ্ছিক) আপনার গুগল অ্যাড ম্যানেজার নেটওয়ার্ক কোড। | |
ApiKey | একটি ঐচ্ছিক এপিআই কী, যা IMA DAI SDK থেকে স্ট্রিম ইউআরএল পুনরুদ্ধার করার জন্য প্রয়োজন হতে পারে। | |
senderCanSkip | একটি বুলিয়ান মান, যা প্রাপককে জানিয়ে দেয় যে প্রেরক ডিভাইসে একটি স্কিপ বাটন প্রদর্শনের ক্ষমতা আছে কি না, যার ফলে স্কিপযোগ্য বিজ্ঞাপনগুলির জন্য সমর্থন চালু হয়। | |
কাস্ট কমান্ড অ্যান্ড কন্ট্রোল টুলে এই মানগুলি কনফিগার করতে, 'লোড মিডিয়া' ট্যাবে ক্লিক করুন এবং কাস্টম লোড রিকোয়েস্ট টাইপটি ' 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 রিসিভার তৈরি করুন
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>
IMA DAI SDK ইম্পোর্ট করুন এবং প্লেয়ার ম্যানেজারটি পান।
আপনার ওয়েব রিসিভারে CAF-এর জন্য IMA DAI SDK ইম্পোর্ট করতে, 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 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();
const streamManager = new google.ima.cast.dai.api.StreamManager();
castContext.start();
</script>
</body>
</html>
লোড মেসেজ ইন্টারসেপ্টর তৈরি করুন
CAF DAI SDK, স্ট্রিম রিকোয়েস্ট করতে এবং কন্টেন্ট URL-কে চূড়ান্ত DAI স্ট্রিম দিয়ে প্রতিস্থাপন করতে CAF লোড মেসেজ ইন্টারসেপ্টর ব্যবহার করে। এই মেসেজ ইন্টারসেপ্টর 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>
স্ট্রিম অনুরোধ তৈরি করুন
আপনার CAF DAI ইন্টিগ্রেশন সম্পূর্ণ করতে, প্রেরকের কাছ থেকে প্রাপ্ত 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>
আপনি এখন গুগলের CAF DAI SDK ব্যবহার করে DAI স্ট্রিম অনুরোধ এবং প্লেব্যাক করতে পারবেন। SDK-এর আরও উন্নত বৈশিষ্ট্য সম্পর্কে জানতে, অন্যান্য গাইডগুলি দেখুন অথবা আমাদের নমুনা রিসিভার অ্যাপ্লিকেশনগুলি ডাউনলোড করুন ।
,আপনার পছন্দের DAI সমাধানটি নির্বাচন করুন।
সম্পূর্ণ পরিষেবা DAI
This guide demonstrates how to play a DAI stream, using the IMA CAF DAI SDK. If you would like to view or follow along with a completed sample integration, download the example .
Before using this guide, be sure to familiarize yourself with the Chromecast Application Framework's Web Receiver protocol. This guide assumes a basic level of familiarity with CAF receiver concepts, such as message interceptors and mediaInformation objects, as well as familiarity with using the Cast Command and Control tool to emulate a CAF sender.
To use IMA DAI, you must have an Ad Manager 360 account. If you have an Ad Manager account, contact your account manager for more details. For information about signing up for Ad Manager, visit the Ad Manager Help Center .
For information on integrating with other platforms, or on using the IMA client-side SDKs, see Interactive Media Ads SDKs .
CAF DAI overview
Implementing DAI using the IMA CAF DAI SDK involves two main components as demonstrated in this guide:
StreamRequest: An object that defines a stream request to Google's advertising servers. Stream requests come in two main varieties:-
LiveStreamRequest: specifies an Asset Key , as well as other optional parameters. -
VODStreamRequest: Specifies a Content Source ID , a Video ID , as well as other optional parameters. - Both request types can optionally include an API key needed to access specified streams, and a Google Ad Manager network code for the IMA SDK to handle ads identifiers as specified in Google Ad Manager settings.
-
StreamManager: একটি অবজেক্ট যা ভিডিও স্ট্রিম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ট্র্যাকিং পিং পাঠানো এবং স্ট্রিম ইভেন্টগুলোকে পাবলিশারের কাছে ফরোয়ার্ড করা।
পূর্বশর্ত
- A Cast Developer Console account with a registered test device.
- A hosted web receiver app that is registered with your Cast Developer Console and which can be modified to host the code provided by this guide.
- A sending app that is configured to use your web receiver app. This example uses the Cast Command and Control tool as the sender.
Configure the sender's MediaInfo objects
First, configure your sender app's MediaInfo object to include the following fields:
contentId | A unique identifier for this media item | |
contentUrl | The fallback stream URL to load if the DAI StreamRequest fails for any reason | |
streamType | For live streams this value should be set to `LIVE`. For VOD streams, this value should be set to `BUFFERED` | |
customData | assetKey | Live streams only. Identifies the livestream to be loaded |
contentSourceId | VOD streams only. Identifies the media feed that contains the requested stream. | |
videoId | VOD streams only. Identifies the requested stream within the specified media feed. | |
networkCode | (Optional) Your Google Ad Manager network code. | |
ApiKey | An optional API key that can be required to retrieve the stream URL from the IMA DAI SDK | |
senderCanSkip | A boolean value to let the receiver know whether the sending device has the ability to display a skip button, enabling support for skippable ads | |
To configure these values in the cast command and control tool, click the Load Media tab, and set the custom load request type to LOAD . Then replace the JSON data in the text area with one of the following JSON objects:
সরাসরি
{
"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"
}
This custom load request object can be sent to the receiver to test the following steps.
Create a basic CAF receiver
Following the CAF SDK Basic Receiver Guide, create a basic web receiver.
Your receiver's code should look like this:
<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>
Import the IMA DAI SDK and get the Player Manager
Add a script tag to import the IMA DAI SDK for CAF to your web receiver, just after the script loading CAF. The CAF DAI SDK is evergreen, so there is no need to set a specific version. Then in the script tag that follows, store the receiver context and player manager as constants before starting the receiver.
<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>
Initialize the IMA Stream Manager
Initialize the CAF DAI SDK's Stream Manager .
<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>
Create the load message interceptor
The CAF DAI SDK uses the CAF load message interceptor to make stream requests and replace the content URL with the final DAI stream. The message interceptor calls streamManager.requestStream() which handles setting ad breaks, requesting the stream, and replacing the existing contentURL .
There can only be one load message interceptor, so if your app requires the use of the interceptor, you need to incorporate any custom functions into the same callback.
<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>
Build the stream request
To complete your CAF DAI integration, you need to build your stream request using the data that was included in the mediaInfo object from the sender.
<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>
You're now able to request and playback DAI streams with Google's CAF DAI SDK. To learn about more advanced SDK features, see the other guides or download our sample receiver applications .
,আপনার পছন্দের DAI সমাধানটি নির্বাচন করুন।
সম্পূর্ণ পরিষেবা DAI
This guide demonstrates how to play a DAI stream, using the IMA CAF DAI SDK. If you would like to view or follow along with a completed sample integration, download the example .
Before using this guide, be sure to familiarize yourself with the Chromecast Application Framework's Web Receiver protocol. This guide assumes a basic level of familiarity with CAF receiver concepts, such as message interceptors and mediaInformation objects, as well as familiarity with using the Cast Command and Control tool to emulate a CAF sender.
To use IMA DAI, you must have an Ad Manager 360 account. If you have an Ad Manager account, contact your account manager for more details. For information about signing up for Ad Manager, visit the Ad Manager Help Center .
For information on integrating with other platforms, or on using the IMA client-side SDKs, see Interactive Media Ads SDKs .
CAF DAI overview
Implementing DAI using the IMA CAF DAI SDK involves two main components as demonstrated in this guide:
StreamRequest: An object that defines a stream request to Google's advertising servers. Stream requests come in two main varieties:-
LiveStreamRequest: specifies an Asset Key , as well as other optional parameters. -
VODStreamRequest: Specifies a Content Source ID , a Video ID , as well as other optional parameters. - Both request types can optionally include an API key needed to access specified streams, and a Google Ad Manager network code for the IMA SDK to handle ads identifiers as specified in Google Ad Manager settings.
-
StreamManager: একটি অবজেক্ট যা ভিডিও স্ট্রিম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ট্র্যাকিং পিং পাঠানো এবং স্ট্রিম ইভেন্টগুলোকে পাবলিশারের কাছে ফরোয়ার্ড করা।
পূর্বশর্ত
- A Cast Developer Console account with a registered test device.
- A hosted web receiver app that is registered with your Cast Developer Console and which can be modified to host the code provided by this guide.
- A sending app that is configured to use your web receiver app. This example uses the Cast Command and Control tool as the sender.
Configure the sender's MediaInfo objects
First, configure your sender app's MediaInfo object to include the following fields:
contentId | A unique identifier for this media item | |
contentUrl | The fallback stream URL to load if the DAI StreamRequest fails for any reason | |
streamType | For live streams this value should be set to `LIVE`. For VOD streams, this value should be set to `BUFFERED` | |
customData | assetKey | Live streams only. Identifies the livestream to be loaded |
contentSourceId | VOD streams only. Identifies the media feed that contains the requested stream. | |
videoId | VOD streams only. Identifies the requested stream within the specified media feed. | |
networkCode | (Optional) Your Google Ad Manager network code. | |
ApiKey | An optional API key that can be required to retrieve the stream URL from the IMA DAI SDK | |
senderCanSkip | A boolean value to let the receiver know whether the sending device has the ability to display a skip button, enabling support for skippable ads | |
To configure these values in the cast command and control tool, click the Load Media tab, and set the custom load request type to LOAD . Then replace the JSON data in the text area with one of the following JSON objects:
সরাসরি
{
"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"
}
This custom load request object can be sent to the receiver to test the following steps.
Create a basic CAF receiver
Following the CAF SDK Basic Receiver Guide, create a basic web receiver.
Your receiver's code should look like this:
<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>
Import the IMA DAI SDK and get the Player Manager
Add a script tag to import the IMA DAI SDK for CAF to your web receiver, just after the script loading CAF. The CAF DAI SDK is evergreen, so there is no need to set a specific version. Then in the script tag that follows, store the receiver context and player manager as constants before starting the receiver.
<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>
Initialize the IMA Stream Manager
Initialize the CAF DAI SDK's Stream Manager .
<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>
Create the load message interceptor
The CAF DAI SDK uses the CAF load message interceptor to make stream requests and replace the content URL with the final DAI stream. The message interceptor calls streamManager.requestStream() which handles setting ad breaks, requesting the stream, and replacing the existing contentURL .
There can only be one load message interceptor, so if your app requires the use of the interceptor, you need to incorporate any custom functions into the same callback.
<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>
Build the stream request
To complete your CAF DAI integration, you need to build your stream request using the data that was included in the mediaInfo object from the sender.
<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>
You're now able to request and playback DAI streams with Google's CAF DAI SDK. To learn about more advanced SDK features, see the other guides or download our sample receiver applications .