スケーラブルなビデオ

スケーラブル・ビデオは、ルーティング・セッションのための機能で、各加入者が現在のネットワーク状況に合ったビデオ画質を、他のどの加入者からも独立して受信できるようにすることで、マルチ・パーティ・セッションのビデオ画質を向上させる。

スケーラブル・ビデオがない場合、メディア・ルーターはストリーム上のすべての加入者に同じビデオ品質を転送します。加入者の接続が低下すると、ルーターは帯域幅の推定を使用してパブリッシャーにビットレートを下げるよう指示します。スケーラブル・ビデオ・アクティブでは、ルーターは各加入者に最適な品質レイヤーをリアルタイムで個別に選択します。

スケーラブルなビデオには ルーティングセッション (メディアルーターを使用するセッション)。ストリームはクライアント間を直接移動し、品質レイヤーを選択したり切り替えたり するための経路にルーターがないためである。参照 メディア・ルーターとメディア・モード.

スケーラブル・ビデオはデフォルトで有効になっている。アプリケーションレベルの設定はデフォルトで オートこれは、セッションに2つ以上のクライアントが存在し、他のすべての条件が満たされた場合に、メディアルーターがスケーラブルビデオを自動的にアクティブにすることを意味します。また、次のように設定することもできます。 オン (常にアクティブ)または オフ - 見る アプリケーションレベルの設定 を参照してください。ほとんどのアプリケーションでは、コードの変更は必要ありません。

コーデックとスケーラビリティ・モデル

スケーラブルビデオがどのように機能するかは、パブリッシャーがネゴシエートするコーデックによって異なります。この違いを理解することで、パブリッシャーのCPU使用率、アップストリームの帯域幅、加入者側の品質適応を最適化する必要がある場合など、ユースケースに適したコーデックを選択することができます。

VP8: サイマルキャスト

VP8スケーラブルなビデオは サイマルキャスト.例えば、1080p、540p、270pは、それぞれ独自の時間(フレームレート)レイヤーを持つ。各ストリームは自己完結しており、単独でデコードできる。

各ストリームは完全に独立しているため、メディア・ルーターは再エンコードすることなく、加入者を即座に異なる品質レベルに切り替えることができ、ネットワーク状況の変化に強い耐性を提供します。

トレードオフ: 複数のストリームをエンコードしてアップロードするには、単一の品質を送信するよりも、パブリッシャー側でより多くのCPUとアップストリーム帯域幅を必要とします。低解像度のレイヤーは、最高品質よりもエンコードにかかるコストが大幅に低くなりますが、それでも総コストは非サイマルキャスト・ストリームよりも高くなります。

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

VP9スケーラブルなビデオ用途 スケーラブルビデオコーディング(SVC).パブリッシャーは、複数の空間(解像度)と時間(フレームレート)レイヤーを数学的に埋め込んだ単一のビットストリームをエンコードする。各上位レイヤーは下位レイヤーに依存するため、ベースレイヤーのみを受信するデコーダーは低画質になり、すべてのレイヤーを受信するデコーダーはフル画質になる。

SVCエンコーディングのパブリッシャーCPUコストは、シングルストリームのエンコーディングよりも高く、VP8サイマルキャストとほぼ同等ですが、SVCではアップロードするビットストリームが1つだけなので、アップストリーム帯域幅は少なくて済みます。メディア・ルーターは、エンコードされた単一のストリームから、各加入者に適したレイヤーのサブセットを抽出して転送できるため、効率的で柔軟な品質適応が可能になり、パケットロスにも強くなります。

SVCは、パブリッシャーエンドポイントとメディアルーターの両方がVP9 SVCをサポートしている必要があります。 FirefoxはVP9をサポートするが、SVCはサポートしない - Firefox のパブリッシャがレイヤーなしで VP9 を送信する場合、メディアルータはそのストリームに品質を適合させることができません。

SVCレイヤー、スケーラビリティ・モード(L1T3, L2T3, L3T3)、アーカイブの動作、デバイスのサポートについては、以下を参照してください。 ルーティング・セッション用のVP9スケーラブル・ビデオ・コーディング.

一目でわかる主な違い

アスペクト サイマルキャスト(VP8) SVC (VP9)
出版社が送るもの 解像度やフレームレートが異なる複数の独立したビットストリーム(個別のSSRC/RID) 空間レイヤーと時間レイヤーが埋め込まれた1ビットストリーム(シングルSSRC)
空間レイヤー マルチストリーム:各解像度が別々のエンコードストリームになる 単一のビットストリームに組み込まれる
時間レイヤー 各サイマルキャスト・ストリームは、時間レイヤーを含むことができる。 単一のビットストリームに組み込まれる
メディア・ルーターの役割 転送するストリームを選ぶ 適切なレイヤーを抽出し、転送する
Firefoxパブリッシャーサポート RIDベースのエンコーディングでサポート VP9は対応、SVCはFirefoxでは未対応

空間レイヤーの解像度比: 各空間ステップでは 解像度比2:1..アン L3T3 ストリームは、ソース解像度の100%、50%、25%のレイヤーを持つ(例:1080p → 540p → 270p)。これが setPreferredResolution() は大幅に異なる解像度をターゲットにすることができる。

H.264:スケーラブルビデオ非対応

H.264コーデックは、Vonage Video APIでパブリッシングとサブスクリプションのために完全にサポートされています。 スケーラブルビデオはH.264ストリームでは使用できません。.メディアルーターは、H.264ストリームの品質レイヤーを切り替えることができず、H.264がネゴシエートされている場合、スケーラブルビデオの設定は影響しません。スケーラブルビデオが必要なアプリケーションでは、代わりにVP8またはVP9を使用してください。参照 ビデオコーデック.

スケーラブルなビデオサポート

スケーラブルビデオはVP8サイマルキャストとVP9 SVCでサポートされています。には対応していません。 H.264ストリーム.でしか入手できない。 ルーティングセッション.

以下のクライアントはスケーラブル・ビデオをサポートしている:

  • ウェブSDK - Chrome、Firefox、Safari、Samsung Internet、WebView Android、WebView on iOS、ChromiumベースのEdge。注:FirefoxはVP8サイマルキャストをサポートしていますが、VP9 SVCはサポートしていません。
  • アンドロイドSDK (対応デバイスの場合)
  • iOS SDK (対応デバイスの場合)
  • Windows SDK
  • Linux SDK
  • macOS SDK
  • リアクト・ネイティブSDK (対応デバイスの場合)

VP9 SVCデバイスとブラウザの互換性の詳細については、以下を参照してください。 ルーティング・セッション用のVP9スケーラブル・ビデオ・コーディング.

注: デフォルトでは、スケーラブル・ビデオは、画面共有ストリームでは無効であり、カメラおよびカスタム・ビデオ・ソース・ストリームでは有効です。画面共有でスケーラブル・ビデオを有効にするには、以下を参照してください。 スケーラブルな画面共有ストリーム.

スケーラブルなビデオの使い方

アプリケーションレベルの設定

スケーラブル・ビデオには、アプリケーションごとに設定できる3つのモードがあります。 Vonageダッシュボード:

  1. ログイン Vonage Video API アカウント.
  2. 左側のメニューから Applications.
  3. 既存のアプリケーションの場合は、3つのドットメニューをクリックし、以下を選択します。 編集.新規アプリケーションの場合、以下のボタンをクリックした後、ケイパビリティ・セクションにアクセスします。 新規アプリケーションの作成.
  4. をトグルして有効にする。 ビデオ オプションがある。
  5. 下にスクロールして 高度な機能を表示する.
  6. アンダー スケーラブルなビデオ次の中から1つ選んでください:
    • オート (推奨) - 1つのセッションに2つ以上のクライアントがある場合、メディア ルータはスケーラブルビデオを有効にします。無効にする特別な理由がない限り、選択したままにします。
    • オン - スケーラブルビデオは、このアプリケーションのすべてのセッションで常に有効です(サポートされているクライアントで)。
    • オフ - このアプリケーションでは、すべてのセッションでスケーラブルビデオが無効になっています。解像度やフレームレートを固定したり、パブリッシャーのCPUや帯域幅の使用量を減らしたい場合に使用します。
  7. クリック 変更を保存する.

注: この設定は VP8サイマル放送 の動作に影響します。VP9はサポートされていれば常にSVCを使用し、H.264はスケーラブル・ビデオをサポートしていないため、どちらもこの設定の影響を受けない。

注: スケーラブルビデオがアクティブな場合、追加の品質レイヤーがエンコードおよび伝送されるため、ストリームはパブリッシャーからより多くのアップストリーム帯域幅を必要とする。

スケーラブルな画面共有ストリーム

デフォルトでは、スケーラブル・ビデオは 使用不能 画面共有ストリーム用 使用可能 カメラおよびカスタムビデオソースストリーム用。画面共有コンテンツは通常、カメラ映像よりも頻繁に変更されないため、スケーラブル・ビデオの追加エンコーディング・コストは通常不要である。ただし、これを有効にすると、スクリーン共有の加入者のネットワーク状態が変化するセッションで有益な場合があります。デフォルトのper-publisherをオーバーライドできます:

SDK メソッド / プロパティ
ウェブSDK scalableScreenshare オプションで OT.initPublisher()
アンドロイドSDK PublisherKit.Builder.scalableScreenshare()
iOS SDK OTPublisherKitSettings.scalableScreenshare
Windows SDK Publisher.Builder.ScalableScreenshare
Linux SDK otc_publisher_settings_set_scalable_screenshare()

加入者優先フレームレートと解像度の設定

スケーラブル・ビデオでストリームが公開されると、加入者はメディア・ルーターに好みの画質を知らせることができる。メディア・ルーターは、加入者の実際のネットワーク条件に最も近い利用可能なレイヤーを選択する。

重要だ: 呼び出し setPreferredResolution() または setPreferredFrameRate() はメディア・ルーターとの再ネゴシエーションをトリガーする。再ネゴシエーションは、CPUを消費し、ストリームの全体的な品質を低下させる可能性がある。優先値は、継続的に調整するのではなく、一度だけ(または加入者のレイアウトが大幅に変更された場合のみ)設定する。

SDK フレームレート 決議
ウェブSDK Subscriber.setPreferredFrameRate() - 見る subscribe-streams ウェブガイド Subscriber.setPreferredResolution() - 見る subscribe-streams ウェブガイド
アンドロイドSDK SubscriberKit.setPreferredFrameRate() - 見る サブスクライブストリーム Androidガイド SubscriberKit.setPreferredResolution() - 見る サブスクライブストリーム Androidガイド
iOS SDK OTSubscriberKit.preferredFrameRate - 見る subscribe-streams iOSガイド OTSubscriberKit.preferredResolution - 見る subscribe-streams iOSガイド
Windows SDK Subscriber.PreferredFramerate - 見る サブスクライブストリーム Windowsガイド Subscriber.PreferredResolution - 見る サブスクライブストリーム Windowsガイド
Linux SDK otc_subscriber_set_preferred_frame_rate() - 見る subscribe-ストリーム Linuxガイド otc_subscriber_set_preferred_resolution() - 見る subscribe-ストリーム Linuxガイド
リアクト・ネイティブ preferredFrameRate のプロパティ OTSubscriber - 見る subscribe-streams React Nativeガイド preferredResolution のプロパティ OTSubscriber - 見る subscribe-streams React Nativeガイド

スケーラブル・ビデオの動作確認方法

SDKには "スケーラブル・ビデオ・アクティブ "フラグはありませんが、以下の方法で動作していることを確認できます。

ビデオ・インスペクター

について ビデオ・インスペクター Quality Metricsモジュールのツールには、コーデック、解像度、フレームレートが表示されます。プロットされた線上の任意のポイントにカーソルを合わせると、現在使用されているコーデックが表示されます。スケーラブル・ビデオが有効な場合、ネットワーク状況の変化に応じて、1人または複数の加入者の解像度やフレームレートが動的に調整されることがあります。

WebRTC統計

各SDKは、基礎となるWebRTC統計レポートを公開しています。パブリッシャー側では RTCOutboundRtpStreamStats:

  • VP8サイマル放送複数の ssrc エントリーが異なる frameWidth/frameHeight 値は、各サイマルキャストレイヤーにつき1つ。
  • VP9 SVCと表示されます。 ssrc を持つ。 scalabilityMode プロパティを設定する(例えば、 L3T3).

統計レポートにアクセスするためのSDKメソッド:

チェックリストスケーラブル動画が活躍するために必要な条件

適応的な品質動作が観察されない場合は、以下をVerifyしてください:

  • セッションは ルート付き (中継なし)。
  • スケーラブル・ビデオが設定されていない オフ アプリケーションレベルで。
  • ネゴシエートされたコーデックは VP8またはVP9 (H.264ではない)。
  • パブリッシャーは 対応クライアント.

よくある誤解とFAQ

スケーラブル・ビデオはVP9 SVCと同じか?

いいえ。"スケーラブルビデオ "はVonage Video API機能の名前です。その 技術的メカニズム はコーデックに依存する:

  • VP8 により、スケーラブルなビデオを実現する。 サイマルキャスト - パブリッシャーは複数の独立したストリームを送信する。
  • VP9 により、スケーラブルなビデオを実現する。 あいてせんたくせつぞく - パブリッシャーは、レイヤーを埋め込んだストリームを1つ送信する。

どちらのメカニズムも、メディア・ルーターが各加入者が受信する画質を適応させるものである。文書でコーデックを特定せずに「スケーラブル・ビデオ」と記載されている場合は、この機能全体を指している。

優先コーデックを設定すると、スケーラブル・ビデオが強制的にオンになりますか?

いいえ。優先コーデックを選択します(ダッシュボードで、または preferredVideoCodecs パブリッシャーオプション)は、スケーラブル・ビデオとは無関係である。スケーラブル・ビデオが有効になるかどうかは、以下のすべてに依存する:

  1. スケーラブルビデオアプリケーションの設定(オン/オフ/自動)。
  2. ルーティングされるセッション。
  3. スケーラブルビデオ(VP8またはVP9 - H.264ではない)をサポートするネゴシエートされたコーデック。
  4. スケーラブル動画をサポートするパブリッシャーのクライアントまたはブラウザ。

なぜなのか? Subscriber.setPreferredResolution() 品質に適応しない?

加入者側 setPreferredResolution() そして setPreferredFrameRate()メディアルーターへのヒントパブリッシャーのエンコーダーへの直接のコマンドではない。メディアルーターがこれらのヒントを使用できるのは、その加入者向けにスケーラブルなビデオレイヤーを積極的に選択しているときだけである。以下の条件のいずれかが真である場合、選択するレイヤーは存在せず、ヒントは効果を持たない:

  • スケーラブル・ビデオは、アプリケーション・レベルまたはパブリッシャー・ストリームで無効化される。
  • ネゴシエートされたコーデックはH.264である(スケーラブルビデオはサポートされていない)。
  • パブリッシャのクライアントがスケーラブルレイヤーを生成していない(例えば、FirefoxのパブリッシャーがSVCレイヤーを使わずにVP9を送信している)。
  • パブリッシャーにはCPUまたは帯域幅の制約があり、ルーターが選択できるよう に上位レイヤーを送信していない。
  • セッションがリレーされている - リレーされたセッションでは、メディアルーターはストリームを転送 しないので、レイヤー選択は発生しない。中継された(P2P)セッションでは、パブリッシャーのエンコーダーは、加入者の ネットワーク状況に基づいて出力を直接適応させるが、これはスケーラブルなビデオレイ ヤー選択とは異なることに注意。

注: 中継セッションにおいて、一部のSDKはこれらのAPIコールをエラーなしで受け入れるかもしれないが、メディアルーターはストリーム転送に関与しないため、品質レイヤーの選択においてプリファレンスに従うことはできない。

注: パブリッシャー側の解像度とフレームレートのAPI(特定のSDKで利用可能な場合)は、メディア・ルーターの品質ヒントではなく、エンコードされたストリームの解像度とフレームレートを直接制御するため、動作が異なります。

同じセッションにスケーラブルなパブリッシャーとスケーラブルでないパブリッシャーを混在させることはできますか?

スケーラブル・ビデオは、セッションごとではなく、ストリームごとに決定されます。セッションは、スケーラブル・ビデオを使用するパブリッシャーと使用しないパブリッシャー(たとえば、H.264パブリッシャーやスケーラブル・ビデオを無効にしてパブリッシングするクライアント)を同時に持つことができます。メディア・ルーターは各ストリームを個別に処理します。

スケーラブル・ビデオはアーカイブに影響するか?

について VP8サイマル放送アーカイバは、利用可能な最高品質のレイヤーを使って記録する。

について VP9 SVC個々のアーカイブは、各参加者のストリームをVP9 SVCエンコードされたWebMとして保存します。合成されたアーカイブは、セッションのコーデックに関係なく、常にH.264/AAC MP4にトランスコードされます。

VP9 SVC WebMファイルの再生は、メディアプレーヤーによっては動作しない場合があります。再生手順とトランスコード・コマンドについては、以下をご覧ください。 アーカイブに関する注意事項 のVP9ガイドにある。

詳しくは このサポート記事.