購読するマネジメント&イベント
このガイドでは、Web(JavaScript)とReact Nativeの両方について、Subscriberの動作の管理と実行時イベントへの反応について説明します。
ストリームの管理(React Native)
ストリームのビデオ寸法が変更されたときの検出
モバイル機器から公開されたストリームのサイズが変更された場合 (たとえば、機器の向きが変更された場合など)、または画面共有ソース ウィンドウのサイズが変更された場合、ストリームのビデオ寸法が変更される可能性があります。ストリームの動画寸法が変更されると、Session オブジェクトはイベントをディスパッチします。
好みのフレームレートと解像度を設定する
スケーラブルビデオ機能を使用するストリームに加入する場合、加入者のビデオ解像度を自動的に管理し、CPU/ネットワーク使用量を最適化するように設定できます。高度な制御を行うには、購読ストリームの優先フレームレートと解像度を設定します:
- - 有効な値は30、15、7、および1である。利用可能な最高のフレームレートを使用するには未定義のままにする。
- - 有効な値は 、 、および 。利用可能な最高の解像度を使用するには、未定義のままにします。
ストリームがセッションから離れるタイミングの検出
リモートストリームがセッションから離れると、コンポーネントはイベントをディスパッチする:
などの詳細が含まれている。
購読者のカスタムレンダリング
デフォルトでは、購読者の動画の子ビューをレンダリングします。また、.NET Framework を使用してレンダリング関数を提供し、レンダリングを完全に制御することもできます:
ストリーム・プロパティの設定
すべてのサブスクライバに対して、on プロパティでグローバル・プロパティを設定するか、プロパ ティでストリームごとのプロパティを設定します。
購読者ストリームの管理 (JavaScript のみ)
契約ストリームのフレームレートを制限する
サブスクライバのビデオストリームのフレームレートを制限することもできます。サブスクライバのフレームレートを制限するには、.NET Framework を渡して、サブスクライバオブジェクトのメソッドを呼び出します:
ビデオストリームのフレームレートは制限されない:
フレームレートが制限されている場合、加入者ビデオフレームは1秒間に1回以下しか更新されない。
この機能は、メディアルータを使用するセッション(メディアモードがroutedに設 定されているセッション)でのみ使用可能であり、メディアモードがrelayedに設定されて いるセッションでは使用できない。リレーされたセッションでは、このメソッドを呼んでも効果はない。
加入者のフレームレートを制限することには、次のような利点がある:
- CPUの使用率を減らすことができる。
- アプリが消費するネットワーク帯域幅を削減します。
- より多くのストリームを同時に購読できる。
加入者のフレームレートを下げても、他のクライアントのビデオのフレームレートには影響しません。
加入者のオーディオがブロックまたはブロック解除された場合の検出
一部のブラウザでは、オーディオ再生が自動的にブロックされ、加入者のオーディオ再生開始前にイベントが必要となります。このようなブラウザには、Safari、Firefox 66+、Chrome 71+が含まれます。
オーディオ再生がブロックされている場合、Subscriber オブジェクトはオーディオ再生ボタンを表示します。サブスクライバーのデフォルトのオーディオ再生ボタンを無効にし、ユーザーがクリックしてオーディオ再生を開始する独自の UI 要素を表示することができます。
参照 加入者オーディオがブロックされている場合にカスタムUI要素を表示する.
サブスクライバのオーディオがブロックされると、Subscriber オブジェクトはイベントをディスパッチし、オーディオのブロックが解除されるとイベントをディスパッチします:
また、Subscriber は、オーディオがブロックされているかどうかを返す関数も含んでいる。
以下のいずれかが発生した場合、加入者オーディオのブロックは解除される:
- ユーザーは、デフォルトの加入者オーディオ再生アイコンをクリックします。
- について OT.unblockAudio() メソッドは、HTML要素がイベントをディスパッチしたときに呼び出されます(デフォルトのオーディオ再生アイコンを無効にしている場合)。
- ローカルクライアントは、カメラまたはマイクへのアクセス権を得る(例えば、(1)への呼び出しに成功した場合など)。
詳しくは Firefoxの自動再生に関するMozillaの記事 そして Chromeの自動再生に関するGoogleの記事.
加入者のビデオが無効になっていることを検知する
サブスクライバのビデオが無効になると、サブスクライバ・オブジェクトはイベントをディスパッチします:
メディアルータが加入者のビデオを無効にする場合、加入者に関連するユーザーインターフェイスを調整することができます。
イベントオブジェクトのプロパティは、ビデオが無効になった理由を定義する。以下の値のいずれかを設定する:
- - その出版社は、.
- - メディアルーターが、ストリーム品質の変化に基づいて加入者へのビデオ送信を停止した。メディアルータのこの機能は、接続性が低下すると、加入者がビデオストリームを停止する。(加入者は、音声ストリームがある場合は受信を継続する)。
このイベントを送信する前に、サブスクライバのストリーム品質が、ビデオストリームが 無効になる危険性があるほど低いレベルまで悪化した場合、サブスクライバはイベントをディ スポートする。
接続性が改善し、ビデオが再びサポートされるようになると、サブスクライバ・オブジェクトはイベントをディスパッチし、サブスクライバはビデオの受信を再開する。
デフォルトでは、サブスクライバは、この理由を持つイベントがディスパッチされると、ビデオ無効インジケータを表示し、イベントが発生するとインジケータを削除します。
ストリームを公開する際、ストリームの画質が原因でビデオが無効になるのを防ぐことができます。.NET Frameworkに渡すオプションで設定します。
購読者統計の取得(ウェブ)
サブスクライバーオブジェクトのメソッドは、サブスクライバーのストリームに関する情報を提供します:
- 失われたオーディオおよびビデオパケットの総数
- 受信したオーディオおよびビデオパケットの総数
- 受信したオーディオとビデオの合計バイト数
- 現在の平均ビデオフレームレート
以下のコードでは、ロス率とビットレートを1秒ごとに記録している:
ローカルクライアントが公開したストリームの統計情報を取得するには、ルーティングされたセッションを使用し、購読時にオプションを設定する必要があります:
より詳細なストリーム統計を取得するには、.
好みのフレームレートと解像度を設定する(ウェブ)
スケーラブルビデオ機能を使用するストリームに加入する場合、加入者のビデオ解像度を自動的に管理するように設定できます。高度な制御を行うには、and を渡すオプションで設定します(または、加入後に and を使用します)。