Chrome 62 版媒體更新

法蘭索瓦博福
François Beaufort

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 範例並按照下列步驟自行試用永久授權:

  1. 前往 https://biograf-155113.appspot.com/ttt/episode-2/
  2. 按一下 [允許離線觀看],等待影片下載。
  3. 開啟飛航模式。
  4. 按一下 [播放] 按鈕開始播放影片!

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:

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

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

裝置旋轉時,自動產生的影片會轉為全螢幕

如果在可視區域中播放影片時,將裝置旋轉為橫向,播放就會自動切換成全螢幕模式。將裝置旋轉為直向模式,就能讓影片重新回到視窗模式。詳情請參閱過往文章