בחירת פתרון ה-DAI הרצוי
שירות DAI מלא
במדריך הזה מוסבר איך להפעיל שידור DAI באמצעות IMA CAF DAI SDK. כדי להציג או לפעול לפי דוגמה של שילוב מלא, מורידים את הדוגמה.
לפני שמשתמשים במדריך הזה, חשוב להכיר את הפרוטוקול של Web Receiver של Chromecast Application Framework. המדריך הזה מבוסס על היכרות בסיסית עם מושגים של מקבלי CAF, כמו חסימות הודעות ואובייקטים מסוג mediaInformation
, וגם על היכרות עם השימוש בכלי הבקרה והפיקוד של Cast כדי לדמות שולחי CAF.
כדי להשתמש ב-IMA DAI, צריך חשבון Ad Manager 360. אם יש לכם חשבון Ad Manager, תוכלו לפנות למנהל החשבון שלכם לקבלת פרטים נוספים. מידע נוסף על ההרשמה ל-Ad Manager זמין במרכז העזרה של Ad Manager.
מידע על שילוב עם פלטפורמות אחרות או על שימוש ב-SDK של IMA בצד הלקוח זמין במאמר ערכות SDK של מודעות Interactive Media.
סקירה כללית על DAI ב-CAF
כדי להטמיע DAI באמצעות IMA CAF DAI SDK, צריך להשתמש בשני רכיבים עיקריים, כפי שמתואר במדריך הזה:
StreamRequest
: אובייקט שמגדיר בקשת סטרימינג לשרתים של Google לפרסום. יש שני סוגים עיקריים של בקשות סטרימינג:LiveStreamRequest
: מציין מפתח נכס ומפתח API אופציונלי, וגם פרמטרים אופציונליים אחרים.VODStreamRequest
: מציין מזהה של מקור תוכן, מזהה וידאו ומפתח API אופציונלי, וגם פרמטרים אופציונליים אחרים.
StreamManager
: אובייקט שמטפל בתקשורת בין מקור הווידאו ל-IMA DAI SDK, למשל הפעלת פינגים למעקב והעברת אירועי מקור לבעלים של אתר החדשות.
דרישות מוקדמות
- חשבון Cast Developer Console עם מכשיר בדיקה רשום.
- אפליקציית מקלט אינטרנט מתארחת, שרשומה ב-Cast Developer Console ואפשר לשנות אותה כדי לארח את הקוד שמופיע במדריך הזה.
- אפליקציית שליחה שמוגדרת להשתמש באפליקציית המקלט באינטרנט. בדוגמה הזו, הכלי לניהול והפעלה של Cast משמש ככלי לשליחה.
הגדרת אובייקטי MediaInfo של השולח
קודם כול, מגדירים את אובייקט MediaInfo של אפליקציית השולח כך שיכלול את השדות הבאים:
contentId
|
מזהה ייחודי של פריט המדיה הזה | |
contentUrl
|
כתובת ה-URL החלופית של הסטרימינג שתיטען אם הבקשה של DAI StreamRequest תיכשל מסיבה כלשהי | |
streamType
|
בשידורים חיים, הערך צריך להיות 'LIVE'. בשידורי VOD, הערך צריך להיות 'BUFFERED'. | |
customData
|
assetKey
|
שידורים חיים בלבד. מזהה את שידור הווידאו החי שרוצים לטעון |
contentSourceId
|
שידורי VOD בלבד. מזהה את פיד המדיה שמכיל את השידור המבוקש. | |
videoId
|
שידורי VOD בלבד. מזהה את מקור הנתונים המבוקש בפיד המדיה שצוין. | |
ApiKey
|
מפתח API אופציונלי שעשוי להידרש כדי לאחזר את כתובת ה-URL של הסטרימינג מ-IMA DAI SDK | |
senderCanSkip
|
ערך בוליאני שמאפשר לנמען לדעת אם למכשיר השולח יש אפשרות להציג לחצן דילוג, וכך לאפשר תמיכה במודעות שניתן לדלג עליהן |
כדי להגדיר את הערכים האלה בכלי הבקרה והפקודות להעברה (cast), לוחצים על הכרטיסייה Load Media ומגדירים את סוג הבקשה בהתאמה אישית להעלאה לערך LOAD
. לאחר מכן מחליפים את נתוני ה-JSON באזור הטקסט באחת מהאפשרויות הבאות של אובייקטי JSON:
LIVE
{
"media": {
"contentId": "bbb",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/bbb.m3u8",
"streamType": "LIVE",
"customData": {
"assetKey": "sN_IYUG8STe1ZzhIIE_ksA",
"ApiKey": "",
"senderCanSkip": true
}
},
"credentials": "testCredentials"
}
VOD
{
"media": {
"contentId": "tos",
"contentUrl": "https://storage.googleapis.com/interactive-media-ads/media/tos.m3u8",
"streamType": "BUFFERED",
"customData": {
"contentSourceId": "2548831",
"videoId": "tears-of-steel",
"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 וקבלת Player Manager
מוסיפים תג סקריפט כדי לייבא את IMA DAI SDK ל-CAF למקלט האינטרנט, מיד אחרי שהסקריפט טוען את CAF. ה-SDK של CAF DAI הוא קוד פתוח, כך שאין צורך להגדיר גרסה ספציפית. לאחר מכן, בתג הסקריפט הבא, שומרים את הקשר של המקלט ואת מנהל הנגן כקבועים לפני שמפעילים את המקלט.
<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>
איך מאתחלים את IMA Stream Manager
מפעילים את Stream Manager של 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>
יצירת מתווך הודעות העומס
ה-SDK של CAF DAI משתמש בחוסם ההודעות של עומס CAF כדי לשלוח בקשות סטרימינג ולהחליף את כתובת ה-URL של התוכן בסטרימינג הסופי של 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>
יצירת הבקשה להעברת הנתונים
כדי להשלים את השילוב של 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.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>
עכשיו אפשר לבקש ולנגן שידורי DAI באמצעות CAF DAI SDK של Google. למידע נוסף על תכונות מתקדמות יותר של SDK, אפשר לעיין במדריכים האחרים או להוריד את אפליקציות המקלט לדוגמה.