Chrome 62 版媒體更新

François Beaufort
François Beaufort

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 範例,然後按照下列步驟操作:

  1. 前往 https://biograf-155113.appspot.com/ttt/episode-2/
  2. 按一下「可離線存取」,等待影片下載完成。
  3. 開啟飛航模式。
  4. 按一下「播放」按鈕,即可觀看影片!

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:

  1. 前往 https://shaka-player-demo.appspot.com/demo/,然後在系統提示時按一下「允許」。
  2. 選擇「Angel One (multicodec、多語言、Widevine)」。
  3. 在「設定」部分的「影片穩定性」欄位中輸入 HW_SECURE_ALL
  4. 按一下「載入」按鈕,即可觀看影片!

背景影片音軌最佳化 (僅限 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 錯誤

裝置旋轉時,影片會自動以全螢幕模式顯示

如果在檢視區播放影片時將裝置旋轉為橫向模式,播放模式會自動切換為全螢幕模式。將裝置旋轉為直向模式後,影片就會恢復為視窗模式。詳情請參閱這篇舊文