- Android 裝置現在支援永久授權離線播放和 Widevine L1。
- 為達到最佳成效,Chrome 現在會在背景播放 MSE 影片時停用視訊軌。
- 網頁開發人員可以在即時 MSE 串流中自訂可搜尋範圍。
- Chrome 現在支援搭配 MSE 使用 MP4 的 FLAC。
- 影片旋轉時會以全螢幕顯示。
Android 的永久授權
Encrypted Media Extensions (EME) 的永久授權代表可在裝置上保留授權,以便應用程式可將授權載入記憶體,而不用向伺服器傳送其他授權要求。這就是 EME 支援離線播放的方式。
之前,ChromeOS 是唯一支援永久授權的平台。這個問題已不再是如此。現在可以在裝置離線時透過 EME 播放受保護的內容。
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.
});
您可以參閱媒體 PWA 範例並按照下列步驟自行試用永久授權:
- 前往 https://biograf-155113.appspot.com/ttt/episode-2/
- 按一下 [允許離線觀看],等待影片下載。
- 開啟飛航模式。
- 按一下 [播放] 按鈕開始播放影片!
Android 適用的 Widevine L1
您可能已經知道,所有 Android 裝置都必須支援 Widevine 安全等級 3 (Widevine L3)。不過,市面上的許多裝置也都支援最高安全性等級:Widevine 安全等級 1,所有內容處理、密碼編譯和控管作業都會在受信任的執行環境 (TEE) 中執行。
好消息!Chrome for Android 現在支援 Widevine L1,因此媒體可透過最安全的方式播放。請注意,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 是自動調整媒體格式 (例如 DASH 和 HLS) 的 JavaScript 程式庫,可協助您試用 Widevine L1:
- 前往 https://shaka-player-demo.appspot.com/demo/,然後在系統提示時按一下「允許」。
- 選擇「Angel One (多重轉碼器、多語言、Widevine)」。
- 在「設定」部分的「影片健全度」欄位中輸入
HW_SECURE_ALL
。 - 按一下「載入」按鈕,即可觀看影片!
背景影片音軌最佳化 (僅限 MSE)
Chrome 團隊一直在努力改善電池續航力,而 Chrome 62 也不例外。
如果影片使用媒體來源擴充功能 (MSE),當影片在背景中播放時 (例如在隱藏的分頁中),Chrome 現在會停用視訊軌。詳情請參閱上一篇文章。
自訂 MSE 直播的搜尋範圍
您可能已經知道,seekable
屬性包含瀏覽器可搜尋的媒體資源範圍。通常其中包含一個時間範圍,範圍從 0 開始,並於媒體資源持續時間結束。不過,如果無法取得時間長度 (例如直播),時間範圍可能會持續變更。
好消息是,您現在可以使用 Media Source Extensions (MSE) 提供或移除與目前緩衝範圍聯集的單一可搜尋範圍,更有效地自訂 seekable
範圍邏輯。當媒體來源持續時間為 +Infinity
時,這會使一個可搜尋的範圍符合兩者。
在下列程式碼中,媒體來源已附加至媒體元素,且只包含其 init 區隔:
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 事件的反應。
Intent to Ship | Chromestatus Tracker | Chromium 錯誤
MP4 (適用於 MSE) 的 FLAC
從 Chrome 56 版開始,一般媒體播放都支援無損音訊編碼格式 FLAC。在不久之後新增 ISO-BMFF 支援中的 FLAC (即 MP4 中的 FLAC)現在,Chrome 62 提供 MP4 中的 FLAC,現在適用於媒體來源擴充功能 (MSE)。
以來說,Firefox 使用者是開發並實作對 MP4 封裝規格的 FLAC 的支援人員,而 BBC 一直在嘗試使用 MSE 進行開發。如要瞭解詳情,請參閱 BBC 的「Delivering Radio 3 Concert Sound」(提供電台 3 演奏會的聲音) 一文。
您可以按照下列步驟偵測 MP4 中的 FLAC 是否支援 MSE:
if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
// TODO: Fetch data and feed it to a media source.
}
如要查看完整範例,請參考我們的官方範例。
Intent to Ship | Chromestatus Tracker | Chromium 錯誤
裝置旋轉時,自動產生的影片會轉為全螢幕
如果在可視區域中播放影片時,將裝置旋轉為橫向,播放就會自動切換成全螢幕模式。將裝置旋轉為直向模式,就能讓影片重新回到視窗模式。詳情請參閱過往文章。