メディアの更新(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. [SD 画質で AV1 を使う] または [常に AV1 を使う] を選択して、目的の AV1 解像度を取得します。一部のデバイスでは、解像度が高いほど AV1 で再生パフォーマンスの問題が発生しやすくなります。
  3. AV1 ベータ版リリース再生リストの YouTube クリップを再生してみてください。
  4. [統計情報] でコーデック av01 を確認します。
YouTube で AV1 を取り上げている統計情報
YouTube の AV1 に関する統計情報。

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

Chrome は、SourceBuffer で新しい changeType() メソッドを使用する Media Source Extensions の再生におけるクロス コーデックまたはバイトストリーム間の遷移の改善に対するサポートを追加します。SourceBuffer に追加されるメディアバイトのタイプを後で変更できます。

MSE の現在のバージョンは、メディアの適応型再生をサポートしています。ただし、適応させるには、SourceBuffer に追加されるメディアが、MediaSource.addSourceBuffer(type)SourceBuffer を最初に作成したときに指定された MIME タイプに従う必要があります。そのタイプのコーデックと以前に解析された初期化セグメントは、一貫して同じである必要があります。つまり、ウェブサイトはコーデックまたはバイトストリームの切り替え(複数のメディア要素や SourceBuffer トラックを使用して切り替える)を実現する明示的な手順を踏む必要があり、アプリケーションの複雑さが増し、ユーザーが認識できるレイテンシが増加します。(このような遷移では、ウェブアプリがレンダラ メインスレッドで同期アクションを実行する必要があります)。この遷移レイテンシにより、遷移間のメディア再生の滑らかさが損なわれます。

新しい changeType() メソッドにより、SourceBuffer はさまざまなバイトストリーム形式とコーデックでバッファリングと再生をサポートできます。この新しい方法では、今後の 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 例外をスローします。

サンプルで、コーデック間とバイトストリーム間のバッファリングとオーディオ要素の再生を試す。

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

MSE 用の MP4 の Opus

オープンで汎用性の高いオーディオ コーデック Opus は、Chrome 33 以降、<audio> 要素と <video> 要素でサポートされています。ISO-BMFF の Opus サポート(MP4 の Opus)はその後追加されました。また、Chrome 70 では、メディアソース拡張機能で 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 の保護されたコンテンツの設定。