Chrome 70 版的音訊/影片更新功能

法蘭索瓦博福
François Beaufort

使用子母畫面觀看影片

子母畫面 (PiP) 可讓使用者在浮動視窗 (永遠位於其他視窗上方) 中觀看影片,以便在與其他網站或應用程式互動時,隨時掌握正在觀看的影片。透過全新的子母畫面 Web API,您可以啟動及控制網站中影片的子母畫面。

請參閱我們的文章瞭解詳細資訊。

AV1 解碼器

AV1 是由開放式媒體聯盟開發的新一代轉碼器。相較於目前最先進的影片轉碼器 VP9,AV1 將壓縮效率提高超過 30%。Chrome 70 會根據官方位元串流規格,為 Chrome 電腦版 x86-64 新增 AV1 解碼器。目前支援僅使用「主要」設定檔 0,且不包含編碼功能。支援的容器為 MP4 (ISO-BMFF) (如需容器的簡短說明,請參閱從原始影片到網路)。

如何試用 AV1:

  • 前往 YouTube TestTube 頁面
  • 選取「偏好 SD 使用 AV1」或「一律偏好 AV1」,以取得所需的 AV1 解析度。請注意,如果使用較高的解析度,AV1 在某些裝置上較有可能發生播放效能問題。
  • 請嘗試透過 AV1 Beta 版發布播放清單播放 YouTube 短片。
  • 確認「統計資料」中的轉碼器 av01。
YouTube 中有關 AV1 觀眾的統計資料。
圖 1. YouTube 中有關 AV1 觀眾的統計資料。

支援 MSE 中的轉碼器和容器切換功能

Chrome 現正新增支援,協助在 Media Source Extensions 中使用新的 changeType() 方法播放,改善播放中的跨轉碼器或跨位元組串流轉換。SourceBuffer可讓附加至 SourceBuffer 的媒體位元組類型之後變更。

目前的 MSE 版本支援媒體自動調整播放;不過,適應性規定,附加至 SourceBuffer 的任何媒體都必須符合最初透過 MediaSource.addSourceBuffer(type) 建立 SourceBuffer 時提供的 MIME 類型。該類型的轉碼器和先前剖析的所有初始化片段都必須保持不變。這表示網站必須採取明確步驟,才能完成轉碼器或位元組流的切換作業 (使用多個媒體元素或 SourceBuffer 追蹤及切換),從而增加應用程式複雜度,並讓使用者察覺的延遲。(這類轉場效果需要網頁應用程式在轉譯器主執行緒中進行同步動作)。這種轉場延遲會影響媒體在轉場間播放媒體的流暢度。

SourceBuffer 採用新的 changeType() 方法,可以緩衝及支援不同位元組串流格式和轉碼器的播放。這個新方法會保留先前經過緩衝處理的媒體,並模組化未來的 MSE 編碼影格清除或移除,並在現有的 MSE 編碼影格處理演算法中,運用剪接和緩衝邏輯。

以下說明如何使用 changeType() 方法:

    const sourceBuffer = myMediaSource.addSourceBuffer('video/webm; codecs="opus, vp09.00.10.08"');
    sourceBuffer.appendBuffer(someWebmOpusVP9Data);

    // Later on...
    if ('changeType' in sourceBuffer) {
      // Change source buffer type and append new data.
      sourceBuffer.changeType('video/mp4; codecs="mp4a.40.5, avc1.4d001e"');
      sourceBuffer.appendBuffer(someMp4AacAvcData);
    }

如預期,如果瀏覽器不支援傳遞的類型,此方法就會擲回 NotSupportedError 例外狀況。

請參閱範例,瞭解如何執行跨轉碼器和跨位元組串流緩衝處理及播放音訊元素。

Intent to Ship | Chromestatus Tracker | Chromium 錯誤

MSE 專用 MP4 的 Opus

自 Chrome 33 版起,<audio><video> 元素均支援開放且用途廣泛的音訊轉碼器 Opus。之後已新增 ISO-BMFF 中的 Opu (又稱為 MP4 中的 Opus)。現在,Chrome 70 開始提供 Media Source Extensions 的 MP4 Opus。

如何偵測 MSE 是否支援 MP4 中的 Opus:

if (MediaSource.isTypeSupported('audio/mp4; codecs="opus"')) {
  // TODO: Fetch data and feed it to a media source.
}

如要查看完整範例,請參閱我們的官方範例

由於缺少 MP4 的 mux Opus 工具及正確的結束脩剪和預先略過值,因此如果這類精確度對您來說十分重要,您必須在 Chrome 中使用 SourceBuffer.appendWindow{Start,End}SourceBuffer.timestampOffset,才能取得取樣準確度播放內容。

Intent to Ship | Chromestatus Tracker | Chromium 錯誤

允許在 Android 裝置上預設播放受保護的內容

在 Android 版 Chrome 70 中,「受保護內容」網站設定的預設值從「先詢問」變更為「允許」,降低播放這類媒體的阻礙。這部分可行的改變,部分原因在於除了 Cookie 和網站資料以外,採取了額外的步驟來清除媒體授權,確保網站不會使用媒體授權來追蹤已經清除瀏覽資料的使用者。

Android 中的受保護內容設定。
圖 2. Android 中的受保護內容設定。