スケーラブルなビデオ
スケーラブル・ビデオは、ルーティング・セッションのための機能で、各加入者が現在のネットワーク状況に合ったビデオ画質を、他のどの加入者からも独立して受信できるようにすることで、マルチ・パーティ・セッションのビデオ画質を向上させる。
スケーラブル・ビデオがない場合、メディア・ルーターはストリーム上のすべての加入者に同じビデオ品質を転送します。加入者の接続が低下すると、ルーターは帯域幅の推定を使用してパブリッシャーにビットレートを下げるよう指示します。スケーラブル・ビデオ・アクティブでは、ルーターは各加入者に最適な品質レイヤーをリアルタイムで個別に選択します。
スケーラブルなビデオには ルーティングセッション (メディアルーターを使用するセッション)。ストリームはクライアント間を直接移動し、品質レイヤーを選択したり切り替えたり するための経路にルーターがないためである。参照 メディア・ルーターとメディア・モード.
スケーラブル・ビデオはデフォルトで有効になっている。アプリケーションレベルの設定はデフォルトで オートこれは、セッションに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ダッシュボード:
- ログイン Vonage Video API アカウント.
- 左側のメニューから Applications.
- 既存のアプリケーションの場合は、3つのドットメニューをクリックし、以下を選択します。 編集.新規アプリケーションの場合、以下のボタンをクリックした後、ケイパビリティ・セクションにアクセスします。 新規アプリケーションの作成.
- をトグルして有効にする。 ビデオ オプションがある。
- 下にスクロールして 高度な機能を表示する.
- アンダー スケーラブルなビデオ次の中から1つ選んでください:
- オート (推奨) - 1つのセッションに2つ以上のクライアントがある場合、メディア ルータはスケーラブルビデオを有効にします。無効にする特別な理由がない限り、選択したままにします。
- オン - スケーラブルビデオは、このアプリケーションのすべてのセッションで常に有効です(サポートされているクライアントで)。
- オフ - このアプリケーションでは、すべてのセッションでスケーラブルビデオが無効になっています。解像度やフレームレートを固定したり、パブリッシャーのCPUや帯域幅の使用量を減らしたい場合に使用します。
- クリック 変更を保存する.
注: この設定は 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メソッド:
- ウェブSDK
Publisher.getRtcStatsReport()そしてSubscriber.getRtcStatsReport() - Linux - 参照 ストリーム統計の取得
チェックリストスケーラブル動画が活躍するために必要な条件
適応的な品質動作が観察されない場合は、以下をVerifyしてください:
- セッションは ルート付き (中継なし)。
- スケーラブル・ビデオが設定されていない オフ アプリケーションレベルで。
- ネゴシエートされたコーデックは VP8またはVP9 (H.264ではない)。
- パブリッシャーは 対応クライアント.
よくある誤解とFAQ
スケーラブル・ビデオはVP9 SVCと同じか?
いいえ。"スケーラブルビデオ "はVonage Video API機能の名前です。その 技術的メカニズム はコーデックに依存する:
- VP8 により、スケーラブルなビデオを実現する。 サイマルキャスト - パブリッシャーは複数の独立したストリームを送信する。
- VP9 により、スケーラブルなビデオを実現する。 あいてせんたくせつぞく - パブリッシャーは、レイヤーを埋め込んだストリームを1つ送信する。
どちらのメカニズムも、メディア・ルーターが各加入者が受信する画質を適応させるものである。文書でコーデックを特定せずに「スケーラブル・ビデオ」と記載されている場合は、この機能全体を指している。
優先コーデックを設定すると、スケーラブル・ビデオが強制的にオンになりますか?
いいえ。優先コーデックを選択します(ダッシュボードで、または preferredVideoCodecs パブリッシャーオプション)は、スケーラブル・ビデオとは無関係である。スケーラブル・ビデオが有効になるかどうかは、以下のすべてに依存する:
- スケーラブルビデオアプリケーションの設定(オン/オフ/自動)。
- ルーティングされるセッション。
- スケーラブルビデオ(VP8またはVP9 - H.264ではない)をサポートするネゴシエートされたコーデック。
- スケーラブル動画をサポートするパブリッシャーのクライアントまたはブラウザ。
なぜなのか? 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ガイドにある。
詳しくは このサポート記事.