איך בוחרים את פתרון DAI שמעניין אתכם
DAI בשירות מלא
המדריך הזה מדגים איך מפעילים שידור DAI באמצעות IMA CAF DAI SDK. אם המיקום תרצו לצפות או לעקוב אחרי שילוב לדוגמה הושלם, אפשר להוריד את הדוגמה.
לפני שתשתמשו במדריך הזה, הקפידו להכיר את Chromecast
פרוטוקול Web Acceptr של Application Framework. הזה
מבוסס על ההנחה שיש לו היכרות בסיסית עם המושגים של מקלטי CAF, כמו
הודעה
מיירטים
וגם
mediaInformation
של אובייקטים, וגם היכרות עם השימוש בפקודות ובאמצעי הבקרה של הפעלת Cast
כדי לחקות שולח CAF.
כדי להשתמש ב-IMA DAI, יש לך צורך בחשבון Ad Manager 360. אם יש לכם מודעה חשבון ניהול, אפשר לפנות למנהל החשבון כדי לקבל פרטים נוספים. למידע בנושא הרשמה ל-Ad Manager, היכנסו למרכז העזרה של Ad Manager". מרכז.
למידע על שילוב עם פלטפורמות אחרות או על השימוש ב-IMA ערכות SDK בצד הלקוח, ראו ערכות SDK של מודעות מדיה אינטראקטיביות.
סקירה כללית של הטמעת מודעות דינמיות (CAF DAI)
כדי להטמיע הטמעת DAI באמצעות IMA CAF DAI SDK יש שני רכיבים עיקריים שמודגמת במדריך זה:
StreamRequest
: אובייקט שמגדיר בקשה של מקור נתונים לשרתי הפרסום של Google. יש שתי סוגים עיקריים של בקשות לשידור:LiveStreamRequest
: מציין מפתח נכס, מפתח API אופציונלי, וכן פרמטרים אופציונליים.VODStreamRequest
: מציין מזהה מקור תוכן, מזהה וידאו ו-API אופציונלי מפתח, וגם פרמטרים אופציונליים אחרים.
StreamManager
: אובייקט שמטפל בתקשורת בין שידור הווידאו לבין IMA DAI SDK, כמו הפעלת פינגים למעקב והעברת אירועי סטרימינג אל מו"ל.
דרישות מוקדמות
- חשבון Cast Console עם ומכשיר בדיקה רשום.
- מקלט אינטרנט מתארח אפליקציה כלומר רשום ב-Cast Console. אפשר לשנות אותו כך שיארח בקוד שקיבלתם במדריך הזה.
- אפליקציה שולחת שמוגדרת להשתמש באפליקציה שלך במקלט האינטרנט. הדוגמה הזו משתמש בכלי 'הפקודה' ו'בקרה' בתור השולח.
הגדרת האובייקטים 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
מדיה, ומגדירים את סוג הבקשה של הטעינה המותאמת אישית לערך LOAD
. לאחר מכן מחליפים את
נתוני JSON באזור הטקסט עם אחד מהאובייקטים הבאים של JSON:
בשידור חי
{
"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. 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>
הפעלת IMA 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>
יצירה של כלי ליירוט הודעות הטעינה
ה-CAF DAI SDK משתמש בהודעת טעינת 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>
יצירת הבקשה לשידור
כדי להשלים את שילוב DAI של CAF, צריך ליצור זרם נתונים
בקשה
באמצעות הנתונים שנכללו באובייקט 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 מתקדמות יותר, אפשר לעיין במדריכים האחרים או הורד את המקלט שלנו לדוגמה .