購読するマネジメント&イベント
このガイドでは、Web(JavaScript)とReact Nativeの両方について、Subscriberの動作の管理と実行時イベントへの反応について説明します。
サブスクライバー・ストリームの管理(React Native)
ストリームのビデオ・ディメンションが変更されたときの検出
モバイル機器から公開されたストリームのサイズが変更された場合 (たとえば、機器の向きが変更された場合など)、または画面共有ソース ウィンドウのサイズが変更された場合、ストリームのビデオ寸法が変更される可能性があります。ストリームの動画寸法が変更されると、Session オブジェクトはイベントをディスパッチします。
好ましいフレームレートと解像度の設定
スケーラブルビデオ機能を使用するストリームに加入する場合、加入者のビデオ解像度を自動的に管理し、CPU/ネットワーク使用量を最適化するように設定できます。高度な制御を行うには、購読ストリームの優先フレームレートと解像度を設定します:
- - 有効な値は30、15、7、および1である。利用可能な最高のフレームレートを使用するには未定義のままにする。
- - 有効な値は 、 、および 。利用可能な最高の解像度を使用するには、未定義のままにします。
ストリームがセッションから離れるのを検知する
リモートストリームがセッションから離れると、コンポーネントはイベントをディスパッチする:
などの詳細が含まれている。
購読者のカスタムレンダリング
デフォルトでは、購読者の動画の子ビューをレンダリングします。また、.NET Framework を使用してレンダリング関数を提供し、レンダリングを完全に制御することもできます:
ストリーム・プロパティの設定
すべてのサブスクライバに対して、on プロパティでグローバル・プロパティを設定するか、プロパ ティでストリームごとのプロパティを設定します。
購読者ストリームの管理 (iOS Swift)
iOSで購読者を管理し、イベントを処理し、プリファレンスを調整します。
加入者のビデオが無効になっていることを検出する
func subscriberVideoDisabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
print("subscriber video disabled.")
}
考えられる理由
OTSubscriberVideoEventPublisherPropertyChangedOTSubscriberVideoEventQualityChangedOTSubscriberVideoEventSubscriberPropertyChanged
ビデオが再開されたら
func subscriberVideoEnabled(_ subscriber: OTSubscriberKit, reason: OTSubscriberVideoEventReason) {
print("subscriber video enabled.")
}
ストリームに関する情報の取得
について OTStream オブジェクトが含まれる:
connection- 出版とのつながりcreationTime- タイムスタンプhasAudio- ブールhasVideo- ブールname- 任意のストリーム名session- 関連セッションstreamId- ユニークIDvideoDimensions- CGSサイズvideoType- カメラ、スクリーン、カスタム
統計情報は OTSubscriberKitNetworkStatsDelegate.
参照 顧客観察可能性ガイド をご覧ください。
好ましいフレームレートと解像度の設定
スケーラブルなビデオストリームの場合、設定することができます:
SubscriberKit.preferredFrameRateSubscriberKit.preferredResolution
購読者ストリームの管理(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 を使用します)。
加入者ストリームの管理(Android)
Androidで購読者を管理し、イベントを処理し、プリファレンスを調整します。
加入者のビデオが無効になっていることを検出する
ビデオが無効の場合:
override fun onVideoDisabled(subscriber: SubscriberKit, reason: String) {
// Video disabled
}
ビデオが再開されたら
override fun onVideoEnabled(subscriber: SubscriberKit, reason: String) {
// Video resumed
}
について reason パラメータは、その変更がなぜ起こったかを説明する。
ストリームに関する情報の取得
について Stream オブジェクトが提供する:
getConnection()- 接続オブジェクトgetCreationTime()- 作成タイムスタンプhasAudio()- ブーリアンhasVideo()- ブーリアンgetName()- ストリーム名getStreamId()- ユニークIDgetVideoHeight()- ピクセル単位の高さgetVideoWidth()- 幅(ピクセルgetVideoType()- カメラ、スクリーン共有、カスタム
また、統計をモニターすることもできる:
setAudioStatsListener()setVideoStatsListener()setMediaLinkStatsListener()getRtcStatsReport()
好ましいフレームレートと解像度の設定
スケーラブルなビデオストリームでは、環境設定を行うことができます:
SubscriberKit.setPreferredFrameRate()SubscriberKit.setPreferredResolution()
加入者ストリームの管理(Windows)
購読者の管理、イベントの処理、Windowsの環境設定の調整。
加入者のビデオが無効になっていることを検出する
OpenTok Media Router は、ネットワークの状態が悪化した場合、ビデオの送信を停止することがあります。
利用可能であれば、加入者は音声の受信を継続する。
ビデオが無効の場合 Subscriber オブジェクトは VideoDisabled イベントを開催する:
subscriber.VideoDisabled += Subscriber_VideoDisabled;
public void Subscriber_VideoDisabled(object sender)
{
// Display a user interface notification.
}
ビデオが再開されたら
subscriber.VideoEnabled += Subscriber_VideoEnabled;
public void Subscriber_VideoEnabled(object sender)
{
// Video resumes for the subscriber.
}
これらのイベントに応じてUIを調整したい場合もあるだろう。
ストリームに関する情報の取得
について Stream オブジェクトは以下のプロパティを公開している:
Connection- 出版とのつながりCreationTime- ストリーム作成タイムスタンプHasAudio- ストリームに音声があるかどうかHasVideo- ストリームにビデオがあるかどうかName- ストリーム名Id- ユニークなストリームIDHeight- ビデオの高さ(ピクセルWidth- ビデオ幅(ピクセルVideoSourceType- カメラ、スクリーン共有、またはカスタムソースタイプ
可能 VideoSourceType 価値観の違いだ:
VideoSourceType.StreamVideoTypeCameraVideoSourceType.StreamVideoTypeScreenVideoSourceType.StreamVideoTypeCustom
モニタリング統計
これらのイベントを使用して、ストリームの統計を監視する:
Subscriber.AudioStatsUpdatedSubscriber.VideoStatsUpdatedSubscriber.MediaLinkStatsUpdated
低レベルのRTC統計を取得する:
subscriber.GetRtcStatsReport();
好ましいフレームレートと解像度の設定
スケーラブル・ビデオ機能を使用するストリームについては、設定を行う:
Subscriber.PreferredFramerateSubscriber.PreferredResolution
加入者ストリームの管理(Linux)
Linuxで購読者の管理、イベントの処理、環境設定の調整を行う。
ストリームのビデオが無効になっていることを検出する
について on_stream_has_video_changed のコールバック関数である。 otc_session_callbacks struct は、ストリームのビデオの可用性が変更されたときに呼び出される。
について stream パラメータは otc_stream 構造体
使用する:
otc_stream_get_id(stream)
でストリームIDを取得する。
ストリームに関する情報の取得
ストリーム情報を取得するには、以下の関数を使用する:
otc_stream_get_connection()- パブリッシング接続を返します。otc_stream_get_creation_time()- ストリームの作成タイムスタンプを返します。otc_stream_has_audio()- ストリームがオーディオを公開しているかどうかotc_stream_has_video()- ストリームがビデオを公開しているかどうかotc_stream_has_audio_track()- ストリームにオーディオトラックがあるかどうかotc_stream_has_video_track()- ストリームにビデオトラックがあるかどうかotc_stream_get_name()- ストリーム名を返すotc_stream_get_id()- 一意のストリーム ID を返します。otc_stream_get_video_height()- 動画の高さをピクセル単位で返します。otc_stream_get_video_width()- 動画の幅をピクセル単位で返します。otc_stream_get_video_type()- ストリームのビデオタイプを返します。
可能なビデオタイプ:
OTC_STREAM_VIDEO_TYPE_CAMERAOTC_STREAM_VIDEO_TYPE_SCREEN
モニタリング統計
これらの加入者コールバック関数を使用する:
on_audio_stats()on_video_stats()on_media_link_stats()
低レベルのRTC統計を取得するには、以下を使用する:
otc_subscriber_get_rtc_stats_report()
好ましいフレームレートと解像度の設定
スケーラブル・ビデオ機能を使用するストリームでは、フレームレートと解像度を設定することができます:
otc_subscriber_set_preferred_framerate()otc_subscriber_set_preferred_resolution()