メディアの更新(Chrome 69)

François Beaufort
François Beaufort

AV1 動画デコーダ

Chrome のステータス トラッカー | Chromium のバグ

EME: 暗号化スキームのサポートのクエリ

CENC モードのみをサポートしているプラットフォームや主要システムもあれば、CENC モードのみをサポートしているプラットフォームや主要システムもあります。 CBCS モード。両方のサポートができる組織もあります。この 2 つの暗号化スキームでは、 ウェブ デベロッパーがインテリジェントな選択を行えるよう、 決める必要があります

「既知」かどうかを調べるためにどのプラットフォームを使用しているか特定しなくて済むようにするため 暗号化スキームのサポートに伴い、新しい encryptionScheme 鍵が追加されます。 ウェブサイトで指定できる MediaKeySystemMediaCapability 辞書 Encrypted Media Extensions(EME)で使用できる暗号化スキーム。

新しい encryptionScheme キーは、次の 2 つの値のいずれかになります。

  • 'cenc' AES-CTR モードのフルサンプルおよび動画の NAL サブサンプル暗号化。
  • 'cbcs' AES-CBC モードにおける部分的な動画 NAL パターンの暗号化。

指定しない場合は、任意の暗号化スキームを使用できることを示します。備考 キーを消去すると、常に 'cenc' スキームがサポートされるようになりました。

以下の例は、異なる 2 つの構成で 2 つの構成をクエリする方法を示しています。 暗号化します。この場合は、いずれか 1 つのみが選択されます。

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']
    },
  ]);

以下の例では、1 つの構成に 2 つの異なる暗号化のみが含まれています。 スキームに対するクエリが実行されます。その場合、Chrome はすべてのケーパビリティ オブジェクトを破棄します。 サポートされていないため、蓄積された構成に 1 つの暗号化が含まれているか、 いずれかまたは両方を選択できます

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']
  }]);

実装の意図 | Chrome のステータス トラッカー | Chromium のバグ

EME: HDCP ポリシー チェック

現在、HDCP は高解像度のストリーミングで一般的なポリシー要件となっています。 保護されたコンテンツ。HDCP ポリシーを適用したいウェブ デベロッパー ライセンス交換が完了するまで待つか、ストリーミングを開始する必要があります。 低解像度でレンダリングされています。HDCP ポリシーは Check API は、解決することを目的としています。

提案された API を使用すると、ウェブ デベロッパーは特定の HDCP ポリシーが 最適な解像度で再生を開始できるように強制適用できます。 実現できるようにすることですこれは、リクエストのステータスを照会するシンプルなメソッドで構成されており、 HDCP ポリシーに関連付けられた仮想キーを作成でき、 MediaKeySession するか、実際のライセンスを取得します。MediaKeys を 音声や動画の要素に付加できます

HDCP Policy Check API は、 mediaKeys.getStatusForPolicy() は、minHdcpVersion キーを持つオブジェクトで置き換えます 指定します。指定されたバージョンで HDCP を利用できる場合、 Promise は 'usable'MediaKeyStatus で解決されます。それ以外の場合、Promise は 次のような MediaKeyStatus他のエラー値で解決する 'output-restricted' または 'output-downscaled'。鍵システムが HDCP ポリシー チェックをまったくサポートしていない場合(Clear Key System など)、Promise は拒否されます。

簡単に説明すると、この 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 月に終了しました。

テストの意図 | Chrome のステータス トラッカー | Chromium のバグ

MSE PTS/DTS 準拠

バッファリングされた範囲と時間の値がプレゼンテーション タイムスタンプによってレポートされるようになりました メディアの Decode Time Stamp(DTS)間隔ではなく、PTS 間隔を使用します。 Source Extensions(MSE)

MSE が新たに登場したとき、Chrome の実装は WebM と MP3 でテストされました。 PTS と DTS を区別しなかったメディア ストリーム形式。そして ISO BMFF(別名 MP4)が追加されるまでは正常に機能していました。このコンテナ 順不同の表示ストリームとデコード タイム ストリームが (H.264 などのコーデックなど)によって、DTS と PTS に差異が生じる場合があります。その結果 Chrome から報告されるバッファリングの範囲と継続時間の違い(通常はわずかにわずか) 値が想定よりも高くなる可能性があります。この新しい動作は Chrome 69 で段階的に展開されます MSE 実装を MSE 仕様に準拠させます。

<ph type="x-smartling-placeholder">
</ph> PTS/DTS <ph type="x-smartling-placeholder">
</ph> PTS/DTS
をご覧ください。

この変更は MediaSource.duration(そのため HTMLMediaElement.duration)、SourceBuffer.buffered(結果として HTMLMediaElement.buffered)SourceBuffer.remove(start, end)

バッファリングされている範囲や時間をレポートするメソッドがわからない場合は、 chrome://media-internals の内部ページに移動して、 「ChunkDemuxer: PTS によるバッファリング」または「ChunkDemuxer: buffering by DTS」の できます。

実装の意図 | Chromium のバグ

Android Go でのメディアビュー インテントの処理

Android Go は、エントリー レベル向けに設計された軽量バージョンの Android です。 対応しています。そのため、必ずしもメディア視聴に付随するものではありません。 です。たとえば、ダウンロードした動画をユーザーが開こうとすると、 そのインテントを処理するアプリがありません。

この問題を解決するために、Android Go 版 Chrome 69 ではメディア表示インテントがリッスンされるようになりました。 ダウンロードした音声、動画、画像を表示できます。言い換えれば、 表示されない場所が表示されます。

<ph type="x-smartling-placeholder">
</ph> ALT_TEXT_HERE <ph type="x-smartling-placeholder">
</ph> メディア インテント ハンドラ
をご覧ください。

この Chrome 機能は、Android を搭載したすべての Android デバイスで有効です O 以降(1 GB 以下の RAM を搭載)

Chromium のバグ

「停止」の削除MSE を使用したメディア要素のイベント

「停滞」ダウンロード中のメディア データがすでに存在する場合は、メディア要素で 処理が約 3 秒間失敗していますMedia Source Extensions を使用する場合 (MSE)の場合、ウェブアプリがダウンロードを管理し、メディア要素は認識しません。 確認できます。これにより、Chrome が「停止」状態になった不適切なイベント ウェブサイトで新しいメディアデータチャンクが 過去 3 秒間にSourceBuffer.appendBuffer()

ウェブサイトは低い頻度で大量のデータチャンクを追加することを決定する場合があるため、これは バッファリングの健全性に関する有用なシグナルではありません。「停止」状態を解消イベント MSE を使用したメディア要素により、混乱が取り除かれ、Chrome がより一層便利になります 実装しますMSE を使用しないメディア要素は、 依然として「stalled」が実施できます

サポート終了と削除の予告 | Chrome のステータス トラッカー | Chromium のバグ