ExoPlayer משתמש ב-API MediaDrm
של Android כדי לתמוך בהפעלה שמוגנת באמצעות DRM.
הגרסאות המינימליות של Android שנדרשות לסכימות DRM נתמכות שונות, יחד עם
בפורמטים של סטרימינג שבהם הם נתמכים, מתוארים
הטבלה הבאה:
סכימת DRM | מספר גרסה של Android | רמת ה-API ב-Android | פורמטים נתמכים |
---|---|---|---|
Widevine "cenc" | 4.4 | 19 | DASH, HLS (FMP4 בלבד) |
Widevine "cbcs" | 7.1 | 25 | DASH, HLS (FMP4 בלבד) |
DeleteKey 'cenc' | 5.0 | 21 | DASH |
PlayReady SL2000 "cenc" | Android TV | Android TV | DASH, SmoothStreaming, HLS (FMP4 בלבד) |
כדי להפעיל תוכן המוגן באמצעות DRM באמצעות ExoPlayer, ה-UUID של ה-DRM
צריך לציין מערכת
כשיוצרים פריט מדיה,
אפשר לספק גם נכסים. הנגן ישתמש במאפיינים האלה כדי
לפתח הטמעת ברירת מחדל של DrmSessionManager
, שנקראת
DefaultDrmSessionManager
, מתאים לרוב תרחישי השימוש. לשימוש מסוים
במקרים מסוימים, ייתכן שיהיה צורך בנכסי DRM נוספים, כפי שמפורט בסעיפים הבאים
.
רוטציית מפתחות
כדי להפעיל שידורים עם מקשים מסתובבים, מעבירים את true
אל
MediaItem.DrmConfiguration.Builder.setMultiSession
כשיוצרים את המדיה
שימושי.
תוכן עם מספר מפתחות
תוכן מרובה מפתחות מורכב מכמה שידורים, שבהם חלק מהשידורים משתמשים מפתחות בהשוואה לאחרים. אפשר להפעיל תוכן מרובה מפתחות באחת משתי דרכים, בהתאם באופן שבו שרת הרישיונות מוגדר.
מקרה 1: תגובה של שרת רישיונות עם כל המפתחות לתוכן
במקרה זה, שרת הרישיונות מוגדר כך שכאשר הוא מקבל בקשה למפתח אחד, הוא נותן תשובה עם כל המפתחות של התוכן. במקרה הזה מטופל על ידי ExoPlayer ללא צורך בתצורה מיוחדת. התאמה בין זרמים (למשל, וידאו באיכות SD ו-HD) הוא חלק, גם אם הם משתמשים מקשי קיצור.
כשהדבר אפשרי, מומלץ להגדיר את שרת הרישיונות שלך כך שיפעל בדרך הזו. זוהי הדרך היעילה ביותר לתמוך בהפעלה של ריבוי מפתחות תוכן, כי הוא לא דורש מהלקוח לשלוח מספר בקשות לרישיונות כדי לגשת לשידורים השונים.
מקרה 2: תגובה של שרת רישיונות עם מפתח מבוקש בלבד
במקרה הזה, שרת הרישיונות מוגדר להגיב רק עם המפתח
שצוינו בבקשה. עם הרישיון הזה אפשר להפעיל תוכן מרובה מפתחות
הגדרת השרת על ידי העברת true
אל
MediaItem.DrmConfiguration.Builder.setMultiSession
כשיוצרים את המדיה
שימושי.
לא מומלץ להגדיר את שרת הרישיונות כך שיתנהג באופן הזה. הוא דורש בקשות רישיון נוספות כדי להפעיל תוכן מרובה מפתחות, יעיל וחזק מהחלופה שתיארנו קודם.
מפתחות אופליין
ניתן לטעון קבוצת מפתחות אופליין על ידי העברת מזהה קבוצת המפתחות אל
MediaItem.DrmConfiguration.Builder.setKeySetId
כשיוצרים את פריט המדיה.
כך מתאפשרת הפעלה באמצעות המקשים שמאוחסנים בערכת המקשים במצב אופליין עם
המזהה שצוין.
סשנים של DRM לתוכן ברור
השימוש ב-placeholder DrmSessions
מאפשר ל-ExoPlayer
להשתמש באותם מפענחים עבור
ניקוי תוכן כפי שהוא משמש כשמפעילים תוכן מוצפן. כשהמדיה מכילה
גם בקטעים ברורים וגם בקטעים מוצפנים, כדאי להשתמש ב-placeholder DrmSessions
כדי למנוע יצירה מחדש של מפענחים כשעוברים בין מצב שקוף למוצפן.
כדי ליצור קטעים חדשים. השימוש ב-placeholder DrmSessions
לטראקים של אודיו ווידאו עשוי
מופעל על ידי העברה של true
אל
MediaItem.DrmConfiguration.Builder.forceSessionsForAudioAndVideoTracks
כאשר
ובניית פריט המדיה.
שימוש ב-DmSessionManager בהתאמה אישית
אם אפליקציה רוצה להתאים אישית את DrmSessionManager
שמשמש להפעלה, היא יכולה
להטמיע DrmSessionManagerProvider
ולהעביר אותו
MediaSource.Factory
שמשמש לפיתוח הנגן. הספק יכול
בחירה אם ליצור מופע חדש של חשבון ניהול בכל פעם או לא. תמיד
משתמשים באותו מופע:
Kotlin
val customDrmSessionManager: DrmSessionManager = CustomDrmSessionManager() // Pass a drm session manager provider to the media source factory. val mediaSourceFactory = DefaultMediaSourceFactory(context).setDrmSessionManagerProvider { customDrmSessionManager }
Java
DrmSessionManager customDrmSessionManager = new CustomDrmSessionManager(/* ... */ ); // Pass a drm session manager provider to the media source factory. MediaSource.Factory mediaSourceFactory = new DefaultMediaSourceFactory(context) .setDrmSessionManagerProvider(mediaItem -> customDrmSessionManager);
שיפור ביצועי ההפעלה
אם יש הפסקות בסרטונים בזמן הפעלה של תוכן המוגן באמצעות DRM מכשירים שפועלת בהם גרסת Android כלשהי מ-Android 6.0 (רמת API 23) עד כולל Android 11 (רמת API 30), אפשר לנסות להפעיל מאגר נתונים אסינכרוני. בתור.