עדכוני מדיה ב-Chrome 62

פרנסואה בופורט
פרנסואה בופורט

רישיונות קבועים ל-Android

המשמעות של רישיון קבוע בתוספי מדיה מוצפנים (EME) היא שניתן לשמור את הרישיון במכשיר, כך שאפליקציות יוכלו לטעון את הרישיון לזיכרון בלי לשלוח בקשת רישיון נוספת לשרת. כך יש תמיכה בהפעלה במצב אופליין ב-EME.

עד עכשיו, ChromeOS הייתה הפלטפורמה היחידה שתמכה ברישיונות קבועים. זה כבר לא נכון. עכשיו אפשר להפעיל תוכן מוגן באמצעות EME גם כשהמכשיר במצב אופליין גם ב-Android.

const config = [{
  sessionTypes: ['persistent-license'],
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'SW_SECURE_DECODE' // Widevine L3
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content while being offline when
  // license is stored locally on device and loaded later.
})
.catch(error => {
  // Persistent licenses are not supported on this platform yet.
});

כדי לנסות את הרישיונות הקבועים בעצמכם, תוכלו להיכנס ל-Sample Media PWA ולבצע את הפעולות הבאות:

  1. נכנסים לכתובת https://biograf-155113.appspot.com/ttt/episode-2/
  2. לוחצים על 'הגדרה כזמין במצב אופליין' וממתינים להורדת הסרטון.
  3. מפעילים את מצב טיסה.
  4. לוחצים על הלחצן 'הפעלה' ומתחילים לצפות בסרטון!

Widevine L1 ל-Android

כפי שאתם ודאי יודעים, כל מכשירי Android נדרשים לתמוך ב-Widevine ברמת אבטחה 3 (Widevine L3). עם זאת, יש מכשירים רבים שתומכים גם ברמת האבטחה הגבוהה ביותר: Widevine Security Level 1 שבו כל עיבוד התוכן, הקריפטוגרפיה והבקרה מתבצעים בסביבת הביצוע המהימנה (TEE).

חדשות טובות! עכשיו יש תמיכה ב-Widevine L1 ב-Chrome ל-Android, כך שניתן להפעיל מדיה באופן המאובטח ביותר. שימו לב שהיא כבר נתמכת ב-Chrome OS.

const config = [{
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'HW_SECURE_ALL' // Widevine L1
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
  // Widevine L1 is not supported on this platform yet.
});

Shaka Player, ספריית ה-JavaScript לפורמטים של מדיה מותאמת (כמו DASH ו-HLS) כוללת הדגמה של Widevine L1.

  1. עוברים לכתובת https://shaka-player-demo.appspot.com/demo/ ולוחצים על "אישור" כשמופיעה בקשה.
  2. בוחרים באפשרות 'Angel One (multicodec, רב-לשוני, Widevine)'.
  3. מזינים את הערך HW_SECURE_ALL בשדה 'עמידות וידאו' בקטע 'הגדרה'.
  4. לוחצים על הלחצן "טעינה" ומתחילים לצפות בסרטון!

אופטימיזציות של רצועות סרטון ברקע (MSE בלבד)

הצוות של Chrome תמיד מנסה למצוא דרכים חדשות לשיפור חיי הסוללה, ו-Chrome 62 לא יוצא מן הכלל.

Chrome משבית כעת רצועות וידאו כשהסרטון מופעל ברקע (לדוגמה, בכרטיסייה שאינה גלויה) אם הסרטון משתמש בתוספים של מקור מדיה (MSE). לקבלת מידע נוסף, ניתן לעיין במאמר הקודם.

התאמה אישית של טווח החיפוש בשידורים חיים של MSE

כפי שאתם ודאי יודעים, המאפיין seekable מכיל את הטווחים של משאב המדיה שאליו הדפדפן יכול לחפש. בדרך כלל, הוא מכיל טווח זמן יחיד שמתחיל ב-0 ומסתיים במשך הזמן של משאב המדיה. אבל אם משך הזמן לא זמין, למשל לשידור חי, טווח הזמן עשוי להשתנות ברציפות.

החדשות הטובות הן שעכשיו אפשר להתאים אישית בצורה יעילה יותר את הלוגיקה של הטווח seekable באמצעות תוספי מדיה של מקור מדיה (MSE), על ידי בחירה או הסרה של טווח בר-חיפוש יחיד, שמאוחד עם הטווחים הקיימים במאגר הנתונים הזמני. התוצאה היא טווח הרצה אחד שמתאים לשניהם, כאשר משך מקור המדיה הוא +Infinity.

בקוד שבהמשך, מקור המדיה כבר צורף לרכיב מדיה ומכיל רק את המקטע ההתחלתי שלו:

const mediaSource = new MediaSource();
...

mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }

mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }

// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

יש מקרים רבים שלא התייחסתי אליהם למעלה, ולכן מומלץ לנסות את הדוגמה הרשמית כדי לראות איך טווחי זמן שאוחסנו במאגר נתונים זמני וטווחי זמן שמיועדים לחיפוש מגיבים לאירועי MSE שונים.

כוונה לשלוח | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

FLAC ב-MP4 עבור MSE

פורמט קידוד האודיו ללא אובדן FLAC נתמך בהפעלה רגילה של מדיה החל מגרסה 56 של Chrome. זמן קצר לאחר מכן נוסף FLAC בתמיכה של ISO-BMFF (נקרא גם FLAC ב-MP4). ועכשיו, FLAC ב-MP4 זמין ב-Chrome 62 עבור תוספי מקור מדיה (MSE).

לידיעתכם, אנשי Firefox הם אלה שפיתחו והטמיעו תמיכה בFLAC במפרט אנקפסולציה של MP4, וב-BBC נעשה ניסיון להשתמש בזה עם MSE. למידע נוסף, אפשר לקרוא את הפוסט "Delivering Radio 3 הופעה קול" של ה-BBC.

כך אפשר לזהות אם FLAC ב-MP4 נתמך ב-MSE:

if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
  // TODO: Fetch data and feed it to a media source.
}

כדי לראות דוגמה מלאה, עיין בדוגמה הרשמית שלנו.

כוונה לשלוח | מעקב אחר הסטטוס של Chrome | באג ב-Chromium

הסרטון האוטומטי מוצג במסך מלא כשמסובבים את המכשיר

אם מסובבים את המכשיר לרוחב בזמן שסרטון פועל באזור התצוגה, ההפעלה תעבור אוטומטית למצב מסך מלא. סיבוב המכשיר לאורך מחזיר את הסרטון למצב חלון. למידע נוסף, קראו את המאמר הקודם.