- Android 現已支援使用永久授權的離線播放功能和 Widevine L1。
- Chrome 現已在背景播放 MSE 影片時停用影片音軌,以提升效能。
- 網路開發人員可以在 MSE 直播中自訂可暫停範圍。
- Chrome 現已支援使用 MSE 的 MP4 格式 FLAC。
- 旋轉裝置時,影片會以全螢幕模式播放。
Android 適用的永久授權
加密媒體擴充功能 (EME) 中的永久授權,表示授權可在裝置上保留,讓應用程式可將授權載入記憶體,而無須向伺服器傳送其他授權要求。這是 EME 支援離線播放的方式。
目前 ChromeOS 是唯一支援永久授權的平台。說不定在 Android 裝置離線時,現在也可以透過 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.
});
您可以試用永久授權,方法是查看Media PWA 範例,然後按照下列步驟操作:
- 前往 https://biograf-155113.appspot.com/ttt/episode-2/
- 按一下「可離線存取」,等待影片下載完成。
- 開啟飛航模式。
- 按一下「播放」按鈕,即可觀看影片!
Android 適用的 Widevine L1
如您所知,所有 Android 裝置都必須支援 Widevine 安全性層級 3 (Widevine L3)。不過,許多裝置也支援最高安全性層級:Widevine 安全性層級 1,在這個層級中,所有內容處理、密碼編譯和控制作業都會在受信任的執行環境 (TEE) 中執行。
好消息!Chrome 適用於 Android 的版本現在支援 Widevine L1,可讓媒體以最安全的方式播放。請注意,ChromeOS 已支援這項功能。
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 (multicodec、多語言、Widevine)」。
- 在「設定」部分的「影片穩定性」欄位中輸入
HW_SECURE_ALL
。 - 按一下「載入」按鈕,即可觀看影片!
背景影片音軌最佳化 (僅限 MSE)
Chrome 團隊一直在尋求可延長電池續航力的新方法,Chrome 62 也不例外。
如果影片使用媒體來源擴充功能 (MSE),Chrome 會在影片在背景播放 (例如在非顯示分頁中) 時停用影片音軌。詳情請參閱這篇舊文。
自訂直播 MSE 串流的可暫停範圍
如您所知,seekable
屬性包含瀏覽器可尋找的媒體資源範圍。通常包含單一時間範圍,從 0 開始,結束於媒體資源的時間長度。不過,如果無法取得持續時間 (例如直播),時間範圍可能會持續變動。
好消息是,您現在可以使用媒體來源擴充功能 (MSE),更有效地自訂 seekable
範圍邏輯,方法是提供或移除與目前緩衝範圍結合的單一可尋找範圍。當媒體來源時間長度為 +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 事件。
Intent to Ship | Chromestatus Tracker | Chromium Bug
MSE 適用的 MP4 中的 FLAC
自 Chrome 56 起,系統就支援在一般媒體播放中使用無損音訊編碼格式 FLAC。不久後,我們也新增了 ISO-BMFF 中的 FLAC 支援功能 (也就是 MP4 中的 FLAC)。而現在,Chrome 62 也支援 MP4 格式的 FLAC 檔案,可用於媒體來源擴充功能 (MSE)。
據瞭解,Firefox 團隊開發並實作了 MP4 封裝規格中的 FLAC,而 BBC 一直在嘗試將其與 MSE 搭配使用。詳情請參閱 BBC 的「提交 Radio 3 演唱會音效」貼文。
以下說明如何偵測 MSE 是否支援 MP4 中的 FLAC:
if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
// TODO: Fetch data and feed it to a media source.
}
如需完整範例,請參閱官方範例。
Intent to Ship | Chrome 狀態追蹤器 | Chromium 錯誤
裝置旋轉時,影片會自動以全螢幕模式顯示
如果在檢視區播放影片時將裝置旋轉為橫向模式,播放模式會自動切換為全螢幕模式。將裝置旋轉為直向模式後,影片就會恢復為視窗模式。詳情請參閱這篇舊文。