音声と動画の更新(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 デスクトップ x86-64 に AV1 デコーダが追加されています。現時点では、「メイン」プロファイル 0 のみがサポートされ、エンコード機能は含まれていません。サポートされているコンテナは MP4(ISO-BMFF)です(コンテナの簡単な説明については、生の動画からウェブ対応の動画へをご覧ください)。

AV1 を試すには:

  • YouTube TestTube ページにアクセスします。
  • [SD 画質で AV1 を使う] または [常に AV1 を使う] を選択して、目的の AV1 解像度を取得します。高解像度では、一部のデバイスで AV1 の再生パフォーマンスの問題が発生する可能性が高くなります。
  • AV1 ベータ版のリリース プレイリストから YouTube のクリップを再生してみてください。
  • [統計情報] でコーデック av01 を確認します。
YouTube で AV1 を使用した統計情報。
図 1. 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 例外をスローします。

サンプルで、オーディオ要素のクロスコーデック バイトストリーム バッファリングと再生を試してみてください。

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

MSE 用の MP4 の Opus

オープンで汎用性の高いオーディオ コーデック Opus は、Chrome 33 以降、<audio> 要素と <video> 要素でサポートされています。ISO-BMFF の Opus(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 に Opus を多重化するツールがないため、このような精度が重要な場合は、Chrome で SourceBuffer.appendWindow{Start,End}SourceBuffer.timestampOffset を使用してサンプル精度の再生を取得する必要があります。

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

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

Android 版 Chrome 70 では、「保護されたコンテンツ」サイト設定のデフォルト値が「最初に確認する」から「許可」に変更され、このようなメディアの再生に関連する摩擦が軽減されます。この変更が可能になったのは、Cookie やサイトデータとともにメディア ライセンスをクリアする追加の手順が導入されたためです。これにより、メディア ライセンスが、閲覧データをクリアしたユーザーをサイトがトラッキングするために使用されることがなくなります。

Android の保護されたコンテンツの設定。
図 2.Android の保護されたコンテンツの設定。