תחילת העבודה עם IMA DAI SDK

איך בוחרים את פתרון 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, כמו הפעלת פינגים למעקב והעברת אירועי סטרימינג אל מו"ל.

דרישות מוקדמות

הגדרת האובייקטים 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 מתקדמות יותר, אפשר לעיין במדריכים האחרים או הורד את המקלט שלנו לדוגמה .