メディアの更新(Chrome 70)

François Beaufort
François Beaufort

ピクチャー イン ピクチャーで動画を視聴する

ピクチャー イン ピクチャー(PIP)を使用すると、ユーザーはフローティング ウィンドウで動画を視聴できます(常に他のウィンドウの上に表示されます)。ユーザーは、他のサイトやアプリを操作しながら視聴しているコンテンツを確認できます。新しい Picture-in-Picture Web API を使用すると、ウェブサイト上の動画のピクチャー イン ピクチャーを開始して制御できます。

詳しくは、こちらの記事をご覧ください。

AV1 デコーダ

AV1 は、Alliance for Open Media が開発した次世代コーデックです。AV1 は、現在の最先端の動画コーデック VP9 と比較して圧縮効率が 30%以上向上しています。Chrome 70 では、公式のビットストリーム仕様に基づいて、Chrome Desktop x86-64 に AV1 デコーダが追加されています。現時点では、「メイン」のプロファイル 0 のみに対応しており、エンコード機能は含まれていません。サポートされているコンテナは MP4(ISO-BMFF)です(コンテナの簡単な説明については、コンテナとコーデックをご覧ください)。

AV1 を試すには:

  1. YouTube TestTube ページにアクセスします。
  2. 希望する AV1 解像度にするには、[SD に AV1 を優先] または [常に AV1 を優先] を選択します。一部のデバイスでは、解像度を高くすると AV1 で再生パフォーマンスの問題が発生する可能性が高くなります。
  3. AV1 ベータ版リリース プレイリストから YouTube クリップを再生してみます。
  4. [統計情報] でコーデック av01 を確認します。
AV1 を紹介する YouTube の統計情報
YouTube で AV1 を紹介する統計情報。

MSE でのコーデックとコンテナの切り替えのサポート

Chrome では、新しい changeType() メソッドを SourceBuffer で使用することで、Media Source Extensions の再生におけるコーデック間またはバイトストリーム間の遷移を改善するためのサポートを追加します。これにより、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 例外をスローします。

コーデックをまたいだバイトストリームのバッファリングと、オーディオ要素の再生を試すには、サンプルをご覧ください。

出荷の意向 | Chromestatus トラッカー | Chromium のバグ

MSE 用の MP4 の Opus

オープンで汎用性の高いオーディオ コーデック Opus は、Chrome 33 以降、<audio> 要素と <video> 要素でサポートされています。その後、ISO-BMFF の Opus サポート(MP4 の Opus)が追加されました。Chrome 70 では Media Source Extensions として MP4 の Opus を利用できるようになりました。

MP4 の Opus が MSE でサポートされているかどうかを確認する方法は次のとおりです。

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

詳細なサンプルについては、公式サンプルをご覧ください。

MP4 に Opus を適切な終了トリミング値とプリスキップ値で多重化するツールがないため、このような精度が重要な場合は、Chrome で SourceBuffer.appendWindow{Start,End}SourceBuffer.timestampOffset を使用してサンプル単位で正確な再生を取得する必要があります。

出荷の意向 | Chromestatus トラッカー | Chromium のバグ

Android で、保護されたコンテンツの再生をデフォルトで許可する

Android 版 Chrome 70 では、「保護されたコンテンツ」サイト設定のデフォルト値が [最初に確認] から [許可済み] に変更され、そのようなメディアの再生に伴う負担が軽減されます。この変更が行われるのは、Cookie やサイトデータとともにメディア ライセンスを削除するための追加手順により、サイトで閲覧データを消去したユーザーのトラッキングにメディア ライセンスが使用されないようにするためです。

ALT_TEXT_HERE
Android の保護されたコンテンツの設定