Chrome 69 的媒體更新功能

François Beaufort
François Beaufort

AV1 影片解碼器

Chromestatus Tracker | Chromium 錯誤

EME:查詢加密配置支援

部分平台或金鑰系統只支援 CENC 模式,有些則只支援 CENC 模式 CBCS 模式。但其他人仍可同時支援這兩種模式。這兩種加密機制 因此網頁程式開發人員必須能 要放送什麼內容

不必苦苦判斷特定平台是否「已知」 支援加密配置,新的 encryptionScheme 金鑰已新增MediaKeySystemMediaCapability 字典:允許網站指定 加密媒體擴充功能 (EME) 中可使用哪些加密配置。

新的 encryptionScheme 鍵可以是以下其中一個值:

  • 'cenc'AES-CTR 模式完整樣本和影片 NAL 子取樣加密。
  • 'cbcs' AES-CBC 模式部分影片 NAL 模式加密。

如果未指定,代表可接受任何加密配置。注意事項 Clear Key 一律支援 'cenc' 配置。

以下範例說明如何查詢具有不同 加密配置。在此情況下,系統只會選擇其中一個。

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [
    {
      label: 'configuration using the "cenc" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      }],
      initDataTypes: ['keyids']
    },
    {
      label: 'configuration using the "cbcs" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      }],
      initDataTypes: ['keyids']
    },
  ]);

在以下範例中,只有一個設定具備兩種不同的加密機制 會發出查詢配置遇到這種情況時,Chrome 會捨棄所有功能物件 由於 Pod 不支援,因此累積的設定可能含有一個加密 配置或這兩者的配置。

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{
    videoCapabilities: [
      { // A video capability using the "cenc" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      },
      { // A video capability using the "cbcs" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      },
    ],
    audioCapabilities: [
      { // An audio capability using the "cenc" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      },
      { // An audio capability using the "cbcs" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      },
    ],
    initDataTypes: ['keyids']
  }]);

意圖實作 | Chromestatus Tracker | Chromium 錯誤

EME:HDCP 政策檢查

目前 HDCP 是串流高解析度串流的常見政策規定 「受保護的內容」類別。想要強制執行 HDCP 政策的網頁程式開發人員 必須等待授權交換完成,或是開始串流 觀賞內容這屬於 HDCP 政策的不幸情況 查看 API 來解決問題。

這個提議的 API 可讓網頁開發人員查詢特定 HDCP 政策 才能以最佳解析度開始播放 最佳使用者體驗其中包含一個用來查詢 與 HDCP 政策相關聯的假設性金鑰,不必建立 MediaKeySession 或擷取實際授權。無須要求 MediaKeys 附加至任何音訊或影片元素

HDCP Policy Check API 的運作原理,是呼叫 將 mediaKeys.getStatusForPolicy() 替換為具有 minHdcpVersion 鍵的物件 和有效的值如果 HDCP 適用於指定版本,則會傳回 承諾使用 'usable'MediaKeyStatus 可解析。否則 可透過 MediaKeyStatus其他錯誤值解析,例如 'output-restricted''output-downscaled'。如果按鍵系統 支援 HDCP 政策檢查 (例如清除金鑰系統),承諾就會拒絕。

簡單來說,以下是 API 目前的運作原理。查看官方範例 ,試用所有版本的 HDCP。

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

navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(mediaKeySystemAccess => mediaKeySystemAccess.createMediaKeys())
.then(mediaKeys => {

  // Get status for HDCP 2.2
  return mediaKeys.getStatusForPolicy({ minHdcpVersion: '2.2' })
  .then(status => {
    if (status !== 'usable')
      return Promise.reject(status);

    console.log('HDCP 2.2 can be enforced.');
    // TODO: Fetch high resolution protected content...
  });
})
.catch(error => {
  // TODO: Fallback to fetch license or stream low-resolution content...
});

適用於來源試用

為了收集網頁程式開發人員的意見,我們先前加入了 HDCP 政策 查看 Chrome 69 電腦版 (ChromeOS、Linux、Mac 和 Windows) 的 API 功能。

試用期已於 2018 年 11 月順利完成。

意圖進行實驗 | Chromestatus Tracker | Chromium 錯誤

MSE PTS/DTS 法規遵循

緩衝區範圍和時間長度值現在採用簡報時間戳記 媒體中的 (PTS) 間隔,而非解碼時間戳記 (DTS) 間隔 Source Extensions (MSE)

MSE 是 Chrome 的實作版本,針對 WebM 和 MP3 進行測試。 媒體串流格式 (PTS 和 DTS) 沒有加以區別。且 但經過 ISO BMFF (又稱 MP4) 之前,這項錯誤可以正常運作。這個容器 經常包含順序失真的與解碼時間串流 (例如 例如 H.264 等轉碼器) 會造成 DTS 和 PTS 不同。已造成 Chrome 會回報不同的緩衝範圍和時間長度 值超出預期Chrome 69 將逐步推出這項新行為 並使其 MSE 實作符合 MSE 規格

PTS/DTS
PTS/DTS

這項變更會影響 MediaSource.duration (進而 HTMLMediaElement.duration)、SourceBuffer.buffered (以及 HTMLMediaElement.buffered)SourceBuffer.remove(start, end)

如果您不確定要使用哪種方法回報緩衝範圍和時間長度 請前往內部 chrome://media-internals 頁面搜尋 「ChunkDemuxer:buffering by PTS」或「ChunkDemuxer:DTS 緩衝」的 。

意圖實作 | Chromium 錯誤

處理 Android Go 上的媒體檢視意圖

Android Go 是專為入門級設計的 Android 輕量版本 智慧型手機因此,「實際」媒體檢視不一定能 如此一來,如果使用者嘗試開啟下載的影片 將完全沒有應用程式可以處理該意圖

為解決這個問題,Android Go 上的 Chrome 69 現在會監聽媒體檢視意圖, 使用者就能觀看已下載的音訊、影片和圖片也就是說 因此,我們不必再擔心遭到忽略的檢視應用程式。

ALT_TEXT_HERE
媒體意圖處理常式

請注意,所有搭載 Android 的 Android 裝置都會啟用這項 Chrome 功能 RAM 低於 1 GB 的 O 和後續機型。

Chromium 錯誤

移除「停滯」使用 MSE 的媒體元素事件

「停滯」如果下載的媒體資料有 無法繼續進行約 3 秒使用媒體來源額外資訊時 (MSE),網頁應用程式會管理下載內容,但媒體元素不知道 其進度。這導致 Chrome 將包含不當活動 表示網站沒有附加新的媒體資料區塊時 過去 3 秒的SourceBuffer.appendBuffer()

由於網站可能會選擇低頻率附加大量資料,因此 這並不是有關緩衝健康狀態的實用信號。正在移除「停滯」事件 使用 MSE 時可清楚混淆,並讓 Chrome 更加排行 與 MSE 規範請注意,沒有使用 MSE 的媒體元素 繼續提高「穩定」活動。

意圖淘汰並移除相關內容 | Chromestatus Tracker | Chromium 錯誤