ルーティング・セッション用のVP9スケーラブル・ビデオ・コーディング

ルーティングセッションにおけるスケーラブルビデオコーディング(SVC)のVP9サポートについて

VP9の概要

VP9は、グーグルが開発したオープンでロイヤリティフリーのビデオコーディングフォーマットである。VP9は VP8の後継として、より高い圧縮効率を提供する。つまり つまり、VP9はVP8と同じビットレートでより高品質のビデオをエンコードすることができる。 VP9は、VP8と同じビットレートでより高品質な動画をエンコードできる。

詳細は ビデオコーデック デベロッパーガイド

スケーラブルビデオコーディング(SVC)

VP9の主な利点の1つは、以下のサポートである。 スケーラブル・ビデオ・コーディング (SVC). SVCでは、単一のビデオストリーム内に複数の空間的および 時間的な品質を含めることができます。これにより、SFU(Selective Forwarding Unit)といった、 例えば ビデオ・メディア・ルーター, SVC対応のパブリッシャーに登録している各クライアントに、 それぞれ異なる解像度やフレームレートを配信するためです。これは、 サイマルキャスト, ここでは、 配信事業者が異なる解像度の複数の動画ストリームを送信しますが、これはVP8で一般的に 行われている手法です。

スケーラビリティ・モード

SVC のスケーラビリティ・モードでは、SVC ストリーム内の空間レイヤーおよび 時間レイヤーの数と種類、ならびにそれらの間の依存関係が定義されます。 詳細については、 W3C WebRTC SVC 仕様書. スケーラビリティモードはパブリッシャーごとに定義され、Vonage Video Media Router が、 利用可能なストリームの中から適切なものをサブスクライバーに転送します。

カメラストリームを配信する場合、Vonage Video API は L1T3、 L2T3、および L3T3 をサポートしています。 スケーラビリティ・モード (3つの時間レイヤーと、数が可変の 空間レイヤー)を、Webクライアントとネイティブクライアントの両方で提供します。

空間レイヤーの数は、カメラストリームの解像度およびパブリッシャーと Vonage Video Media Router 間の推定帯域幅に基づいて 自動的に調整される点にご注意ください。 十分な帯域幅がある場合、FHDの空間レイヤーは1920x1080、960x540、および480x270ピクセルとなります。 HDの場合、1280x720、640x360、および320x180となります。SDの場合、空間レイヤーは720x480 と360x240の2つだけです。 同様に、時間レイヤーについては、最上位の時間レイヤーが30 FPS、中位の 時間レイヤーが15 FPS、最下位の時間レイヤーが7.5 FPSとなります。

Webクライアントとネイティブクライアントのいずれにおいても、画面共有ストリームを公開する際、 スケーラビリティモードは公開時に設定されるオプションによって決定されます(詳細は スケーラブルな動画ページ. これが 無効になっている場合、ストリームはL1T1モードを使用し、単一の空間層および 時間層(スケーラビリティなし)を提供します。 ただし、有効になっている場合、システムは パブリッシャーとVonage Video Media Router間の推定帯域幅、および 画面共有ストリームの解像度に基づいて、L1T1、L2T1、またはL3T1のいずれかを 動的に選択します。

サイマルキャスト(VP8で使用)とSVC(VP9で使用)の比較

同時配信(VP8で使用)では、配信事業者は、それぞれ異なる解像度と ビットレートを持つ複数の独立した動画ストリームを、メディアサーバーに送信します。 複数のストリーム内にエンコードされたこれらの時間レイヤーにより、 サーバーはネットワーク状況に基づいて、各加入者に最適な ストリームとレイヤーを動的に選択することができます。 この 手法は、動画の品質をリアルタイムで調整することで効率を向上させますが、 パブリッシャーは、さまざまな状況に対応するために、同じストリームの 複数のバージョンをエンコード(CPU負荷の増加を伴う)および送信( ネットワーク負荷の増加を伴う)する必要があります。

対照的に、VP9でサポートされているSVC(Scalable Video Coding)は、複数の 空間的および時間的な画質を単一のストリームに埋め込みます。 これにより、メディアサーバーは、 パブリッシャーが複数のストリームを送信する必要なく、 各サブスクライバーに対して適切なレイヤーを抽出して転送することができます。このため、SVCは 同時配信と比較して帯域幅効率が高く、パブリッシャーのワークロードの効率も 向上します。

使用方法

プロジェクトの「プロジェクト」ページで、優先する動画コーデックとしてVP9を選択することで、 この機能のテストを進めることができます。 Video API アカウント.

  • 中継セッションの場合、SVCは無効になる。
  • ルーティングされたセッションの場合、SVCは自動的にオンになる。

VP9ビデオのアーカイブに関する注意事項

当社のプラットフォームでは、「合成アーカイブ」と「個別 ストリームアーカイブ」の2つのアーカイブモードを提供しており、これらはVP9を優先 コーデックとして選択した場合でも引き続き機能します。合成アーカイブでは、録画データはH.264ビデオとAACオーディオを含む合成MP4ファイルとして保存され、 単一の最終的な出力ファイルが生成されます。 これに対し、 個別ストリームアーカイブでは、各参加者のメディアがVP9 SVC(Scalable Video Coding)ビデオを含むWebMストリームとして個別に保存されます。

商用およびオープンソースのプレーヤーにおけるVP9 SVCのサポート状況は、 バージョンや具体的な実装によって異なる場合があります。 例えば、 個別のストリームアーカイブを再生する場合、すべてのプレーヤーが SVC エンコードされた ストリームを正しく処理できるわけではありません。FFMPEG の場合、libvpx-vp9 コーデックのみが これらのストリームを適切にデコードできます。正しく再生するには、以下のコマンドを 使用できます:

ffplay -vcodec libvpx-vp9 vp9_with_svc.webm

また、SVCエンコードされたWebMファイルを、SVCを使用しない標準のVP8 ストリームに変換する必要がある場合(互換性を高めるため)、以下の FFMPEGコマンドを使用して動画をトランスコードすることができます:

ffmpeg -c:v libvpx-vp9 -i vp9_with_svc.webm -c:v libvpx vp8.webm

このトランスコード処理により、SVCレイヤーが削除されるため、VP9やSVCを完全にはサポートしていない プレーヤーでも動画を再生できるようになります。

また、VP9コーデックを維持したままSVCレイヤーを削除したい場合は、 次のように指定できます:

ffmpeg -c:v libvpx-vp9 -i vp9_with_svc.webm vp9_without_svc.webm

既知の問題

以下の制限事項および既知の問題については把握しております:

  • 動的な映像コンテンツや 複雑なテクスチャを含むExperience Composerのワークロードにおいて、VP9でエンコードされたExperience Composer ストリームの出力映像品質は、知覚的映像評価(VMAF)テストにおいて、VP8でエンコードされた Experience Composerストリームよりも低いスコアとなりました。このExperience Composerの画質差は、 標準的なコンポジション型ビデオ会議のユースケースにおいては、目立つことはないはずです。

よくある質問

VP9ブラウザの互換性はどうなっていますか?

2024年現在、VP9はすべての主要なブラウザで完全にサポートされています。これには Google Chrome、Firefox、Microsoft Edge、Samsung Internet、Opera、およびAndroid版WebView が挙げられ、これらは2016年頃からVP9との完全な互換性を提供しています。AppleのSafari 15以降 およびiOS 15以降のWebViewもVP9に対応しています。

VP9をサポートしているデバイスは?

2025年現在、最新のデバイスのほとんどが、WebRTCサービス向けのVP9を完全にサポートしています。 これには、 Google Chrome、Firefox、Microsoft Edge、Opera、Android版WebView、Safari およびiOS版WebView(バージョン15以降)といった主要ブラウザの最新バージョンを 実行するデスクトップ、ノートPC、モバイルデバイスが含まれます。 これらのブラウザではハードウェアによる ビデオエンコーディングが行われる場合もありますが、エンコードおよびデコードに対するハードウェアサポートはそれほど普及していません。 例えば、ハードウェアがVP9のエンコードおよびデコードに対応している場合でも、当社の ネイティブSDKではVP9に対してソフトウェアによるビデオエンコーディングを使用します。

一方、ハードウェアとソフトウェアによるSVCのサポートは、それほどユビキタスではない。

注:FirefoxではVP9はサポートされていますが、SVCはサポートされていません。

どの機器が推奨されていますか?

VP9はVP8に比べて動画圧縮効率が向上していますが、その代償としてCPUへの負荷が高くなります。主要メーカーの 最新機種(AppleのiPhone、GoogleのPixel、SamsungのGalaxyなど)であれば、 良好なパフォーマンスが期待できます。

同様のCPU要件を持つもう1つの機能として、Vonage Media Processor APIがあります。 これらの要件を満たすデバイスであれば、VP9を問題なく処理できると見込まれます。

プラットフォーム別推奨デバイス

クライアントSDKのバージョンを教えてください。

で示されていること。 コーデックのページ が適用されます。 ただし、早期 アクセス期間中に開発された改善点を含む、VP9およびSVCの完全なサポートは、リリースバージョン2.29以降で利用可能になります。アップグレードが できない場合は、Webおよびネイティブクライアント Client SDKバージョン2.27以降で、VP9およびSVCの基本サポートが利用可能です。

ブラウザやSDK、デバイスがVP9に対応していない場合はどうなりますか?

パブリッシャーの場合は、VP8にフォールバックします。サブスクライバーの場合は、 動画の受信ができず、音声のみを受信することになります。

ブラウザ/SDK/デバイスがVP9をサポートしているが、SVCをサポートしていない場合はどうなるのか?

パブリッシャーとサブスクライバーの双方において、VP9がネゴシエーションの対象となりますが、 スケーラビリティ機能はサポートされません。エンドポイントは、SVCなしのVP9を透過的に使用します。

セッションのコーデックをモニターするにはどうすればよいですか?

他のコーデックと同様、Video Inspector ツールでは「Quality Metrics」モジュールにコーデック、 解像度、フレームレートが表示されます。プロットされた線の任意の ポイントにマウスを合わせると、使用されているコーデックを確認できます。

エンドポイントが使用しているコーデックを知るには?

SDKには、各ストリームごとにRTCStatsReportオブジェクトを取得するためのメソッドが用意されており、 このオブジェクトには、使用されているオーディオおよびビデオコーデックが含まれます。 コードサンプルをご覧になりたい場合は、以下の 加入者リファレンス・マニュアル または その 出版社情報 マニュアル JS用。 Linuxについては、詳細情報を以下で確認できます。 これ.