במסמך הזה מפורטת סקירה כללית של השילוב של ניהול תורים ו-DRM תמיכה.
שיפורי DRM
הדגמת Cast של ExoPlayer
עודכנה לשימוש בדרך מובנית להעברת תצורה של DRM באמצעות
MediaInfo
של ExoPlayer לאפליקציית המקבל. דוגמה של Cast
משתמש גם במקלט הדגמה שכולל את אותו קוד בסקירה הכללית הזו, וכך מאפשר
כדי לבדוק את התמיכה ב-DRM. עם זאת, כדי להפעיל Cast שמוגן באמצעות DRM
צריך ליצור ולארח
Web foundr.
לפני שמתחילים, כדאי שתכירו את תיעוד בנושא תמיכה ב-DRM ב Google Cast ו-ExoPlayer. הסקירה הכללית מראה איך כדי לחבר את התצורה של ExoPlayer DRM למקלט אינטרנט. למידע שמסביר איך להשתמש ב-DRM ב-ExpoPlayer, ראו את אתר ExoPlayer.
מתן הגדרות DRM
אפליקציית ההדגמה של ExoPlayer מכילה קוד לדוגמה שמראה איך לספק DRM כחלק מ-MediaItem. ארבע האפשרויות שאפשר להגדיר הן:
- כותרות - מילון של כותרות שחלות על בקשת ה-HTTPS על לאחזר את רישיון ה-DRM.
- כתובת URL של הרישיון – כתובת ה-URL ששימשה לרכישת הרישיון.
- Protection System – סכימת ההגנה של DRM שמשמשת להגנה על התוכן, לדוגמה, Widevine.
הגדרת ה-DRM שמספקים ל-ExpoPlayer נשלחת למקלט
כנכס ב-customData
ב-MediaInformation
כחלק מבקשת טעינה. כברירת מחדל, הנכס הזה נקרא
exoPlayerConfig
, שתואם להגדרה הבאה.
/**
* Extended configuration settings for ExoPlayer.
*/
ExoPlayerConfig class {
constructor() {
/**
* Dictionary of headers to apply to the license request.
* @type {!Object|undefined}
*/
this.headers;
/**
* The URL for your DRM server.
* @type {string|undefined}
*/
this.licenseUrl;
/**
* Preferred protection system to use for decrypting content.
* @type {!cast.framework.ContentProtection|undefined}
*/
this.protectionSystem;
/**
* Indicates whether CORS Access-Control requests should be made using
* credentials such as cookies or authorization headers.
*
* If withCredentials is set to true then Access-Control-Allow-Origin cannot
* be set to '*'.
* @type {boolean|undefined}
*/
this.withCredentials;
}
}
הגדרה ראשונית
בהתאם לפתרון ה-DRM שבו אתם משתמשים, ייתכן שתצטרכו להגדיר licenseRequestHandler
ו-mediaPlaybackInfoHandler
. licenseRequestHandler
מאפשר לך להתאים אישית
האופן שבו CAF מבקש רישיון משרת מפתחות הרישיון שלכם.
mediaPlaybackInfoHandler
מאפשר לך לשנות את
PlaybackConfig
לכל פריט מדיה, אם, לדוגמה, כל פיסת תוכן צריכה להשתמש
לכתובת URL של שרת רישיונות שונים.
כדי לתעד עותק של ExoPlayerConfig
מכל אובייקט של בקשת טעינה, יוצרים
מיירט בקשות טעינה באפליקציית ה-SDK של מכשיר ה-Web קבלה.
השלב הראשון הוא לרשום את ה-handlers לפני התחלת ההעברה (cast) תרגום מכונה.
const context = cast.framework.CastReceiverContext.getInstance();
const playbackConfig = new cast.framework.PlaybackConfig();
playbackConfig.licenseRequestHandler =
licenseRequestHandler;
context.getPlayerManager().setMediaPlaybackInfoHandler(
mediaPlaybackInfoHandler);
context.getPlayerManager().setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
loadInterceptor);
// starts the Cast application
context.start({playbackConfig: playbackConfig});
מיירט בקשות עומס
מיירט בקשות העומס הוא קריאה חוזרת (callback) שמאפשר להציג ולשנות בקשה לטעינת Cast לפני ש-CAF מנסה לטעון פריט מדיה. חשוב לציין בוצעה קריאה לפני מטפל בקשת הרישיון ו-handler של מידע על הפעלת מדיה.
מיירט בקשות העומס עובר LoadRequestData
אובייקט שמכיל את הגדרת Exo Player שנשלחה על ידי האפליקציה. אפשר
שמירת האובייקט הזה כמשתנה גלובלי לשימוש ב-handler של בקשות הרישיון
ו-handler של מידע על הפעלת מדיה.
loadInterceptor(loadRequestData) {
// not every load request will have a customData object
if (loadRequestData.media && loadRequestData.media.customData &&
loadRequestData.media.customData['exoPlayerConfig']) {
// exoPlayerConfig is a global variable here
exoPlayerConfig =
loadRequestData.media.customData['exoPlayerConfig'];
}
// you must return the loadRequestData object
return loadRequestData;
}
handler של בקשת רישיון
ה-handler של בקשת הרישיון מאפשר להתאים אישית את בקשת ה-HTTPS באינטרנט
המקבל יוצר לשרת הרישיונות שלך. ה-handler הועבר NetworkRequestInfo
שבו ניתן להשתמש כדי להוסיף כותרות HTTP, לכלול קובצי Cookie או אפילו
לשנות את כתובת האתר. ה-handler צריך להחזיר את האובייקט הזה.
אם, לדוגמה, הייתם צריכים להוסיף כותרות מותאמות אישית לבקשת הרישיון, אתם יכול ליצור handler של בקשת רישיון שדומה לזה:
licenseRequestHandler(networkRequestInfo) {
if (!exoPlayerConfig) {
return networkRequestInfo;
}
networkRequestInfo.headers =
exoPlayerConfig.headers ? exoPlayerConfig.headers : undefined;
return networkRequestInfo;
}
handler של מידע לגבי הפעלת מדיה
ה-handler של מידע על הפעלת מדיה מאפשר לבצע שינויים בהפעלה
על בסיס כל פריט מדיה. ה-handler הועבר LoadRequestData
וPlaybackConfig
,
עליך להחזיר הגדרות הפעלה. ה-handler של מידע על הפעלת מדיה יהיה
נשלחת קריאה לפני שכל פריט שמפעילים Cast נטען. אם היו לכם כתובות URL של רישיונות לכל תוכן,
יכול לשנות אותן ואת מערכת ההגנה לפני הטעינה.
mediaPlaybackInfoHandler(loadRequest, playbackConfig) {
if (!exoPlayerConfig) {
return;
}
playbackConfig.licenseUrl = exoPlayerConfig.licenseUrl ?
exoPlayerConfig.licenseUrl :
undefined;
playbackConfig.protectionSystem = exoPlayerConfig.protectionSystem ?
exoPlayerConfig.protectionSystem :
undefined;
return playbackConfig;
}
מקורות מידע נוספים
כל הטמעת DRM מותאמת אישית, והקוד הזה מסופק כהדגמה בלבד. עליך לפנות לספק ה-DRM כדי לוודא שיש לך הטמענו DRM באפליקציות ExoPlayer ובאפליקציות Cast.
באתר של ExoPlayer יש מסמכי תיעוד עדכניים והודעות. בעיות עם ExoPlayer והשילוב של הפעלת Cast עשויות להיות דווחו ב-GitHub של ExoPlayer של מאגר הנתונים.