セッション作成の概要
アプリ上でOpenTokセッションに接続する際は、OpenTokセッションIDを使用して、接続したいセッションを指定します。各セッションIDは、固有のOpenTokセッションを識別します。セッションは、参加者が集まってチャットを行う「部屋」のようなものだと考えてください。
作成するセッションの数や、クライアントがセッションに接続する方法は、アプリの要件によって異なります。 アプリがユーザー同士を1回限りのミーティングのために接続する場合は、そのミーティングごとに個別のセッションを作成してください。ただし、アプリがユーザーを同じ「ルーム」内で数日間にわたって接続する場合は、1つのセッションを作成して再利用することができます。あるユーザーグループが互いにミーティングを行い、他のグループが独立してミーティングを行う場合は、グループごとに個別のセッションを作成してください。
OpenTokのセッションには有効期限がありません。ただし、認証トークンには有効期限があります。また、セッションを明示的に破棄することはできない点にもご注意ください。
セッションを作成する際、以下のオプションを指定することができます:
- メディアモード(OpenTok Media Router を使用するかどうか)
- アーカイブ設定(セッションを自動的にアーカイブするかどうか)
- 位置情報のヒント(セッションの地理的位置を指定するため)
OpenTok メディアルーターとメディアモード
セッションを作成する際には、そのセッション内のクライアントがオーディオ・ビデオストリームをどのように送信するかを指定します。これは メディアモード. 選択肢は2つあります:
-
中継 — リレーセッションでは、クライアント同士が直接(ピアツーピア)で音声・映像ストリームの送受信を試みます。ただし、ファイアウォールの制限によりクライアント同士が接続できない場合、セッションではOpenTok TURNサーバーを介して音声・映像ストリームを中継します。 (バージョン2.2以前、OpenTokサーバーSDKでは、これらのセッションをピアツーピアセッションと呼んでいました。ただし、それらのSDKを使用している場合でも、ファイアウォールの制限によりピアツーピアストリーミングがブロックされる場合は、セッションではOpenTok TURNサーバーを使用してストリームを中継します)。 セッションネゴシエーションには、TLS 1.3 および 3072 ビット以上の強力な証明書が使用されます。
-
ルーティング — このセッションでは、OpenTok Media Router を使用して、クライアント間で音声・動画ストリームをルーティングします。この OpenTok メディアルーター には次のようなメリットがある:
-
セッションネゴシエーションには、TLS 1.3 および 3072 ビット以上の強固な証明書が使用されます。
-
OpenTok Media Router を使用すると、多者間セッションにおける帯域幅の使用量を削減できます。(media mode プロパティが relayed に設定されている場合、ストリームを配信する各クライアントは、そのストリームを購読する各クライアントに個別に送信する必要があります。OpenTok Media Router を使用すると、配信者は 1 つのストリームを 1 回だけルーターに送信するだけで、ルーターがそれを各購読クライアントに転送します。)
-
OpenTok Media Router は、以下の機能を通じてユーザー体験の質を向上させることができます。 加入者向け音声のフォールバックおよび映像の復旧. これらの機能により、クライアントの接続状態が、購読しているストリームの動画を再生できないほど悪化した場合、そのクライアントでは動画の再生が停止され(他のクライアントには影響しません)、音声のみが再生されます。クライアントの接続状態が改善すると、動画の再生が再開されます。
-
OpenTok Media Router は、以下の機能をサポートしています。 OpenTokのアーカイブ機能、これにより、OpenTokのセッションを録画、保存、および再生することができます。
-
OpenTok Media Router は以下をサポートしています ライブ配信.
-
OpenTok Media Router は以下をサポートしています エクスペリエンス・コンポーザー.
-
OpenTok Media Router を使用するセッションでは、公開された動画のフレームレートを下げると、ストリームが使用する帯域幅もそれに比例して減少します。
-
OpenTok Media Router は、以下の機能をサポートしています。 スケーラブルビデオ機能. スケーラブルビデオは、複数者が参加するセッションにおける映像の品質を大幅に向上させることができます。
-
OpenTokのiOSおよびAndroid SDKを使用しているクライアントでは、中継セッションではセッションに接続できるクライアントは2台までです。モバイルデバイスでの多者間セッションについては、OpenTok Media Routerが追加のクライアントをサポートしています。
-
OpenTok Media Router は、以下の機能をサポートしています。 SIP相互接続機能, これにより、OpenTokセッションをSIPゲートウェイに接続できるようになります。
-
OpenTok Media Router は、以下の機能をサポートしています。 オーディオコネクタ機能, これにより、OpenTokセッションからの音声をWebSocketに送信できるようになります。
-
ルーティングされたセッション(OpenTok Media Router を使用するセッション)では、以下の最適化も適用されます:
-
シングルピア接続。 iOS、Android、Windows、macOS、Linux用クライアントSDKのバージョン2.28.0から、ルーティングされたセッションは以下をサポートします。 シングルピア接続. シングルピア接続を有効にすると、クライアント向けのすべてのサブスクライバーストリームは、OpenTok Media Router への単一の接続を介して配信されます(たとえそれらが異なるクライアントによって公開されている場合でも)。 シングルピア接続を有効にするメリットとしては、クライアントのリソース消費量の削減、レート制御の改善、およびモバイルネイティブデバイスにおける大規模なセッションへの対応などが挙げられます。シングルピア接続が無効になっている場合(デフォルト設定)、クライアントはオーディオ/ビデオのバンドルごとに、OpenTok Media Router への個別の接続を使用します。
シングルピア接続は、ルーティングされたセッション(Vonage Video API メディアルータを使用するセッション)でのみ使用できます。使用例、設定の詳細、コードサンプル、および他の機能との相互作用を含む完全なガイドについては シングルピア接続開発者ガイド.
シングルピア接続を有効にするには、以下の Client SDK API を使用します:
- Web SDK (OpenTok.js) — 詳細については、
singlePeerConnectionに渡すオプションのOT.initSession() - アンドロイドSDK
Session.Builder.setSinglePeerConnection() - iOS SDK
OTSessionSettings.singlePeerConnection - Linux SDK
otc_session_settings_set_single_peer_connection() - macOS SDK
otc_session_settings_set_single_peer_connection() - Windows SDK
SinglePeerConnectionプロパティのSession.Builderクラス - React Native SDK — The
enableSinglePeerConnectionプロパティのoptionsOTSessionコンポーネントのプロップ
- Web SDK (OpenTok.js) — 詳細については、
-
メディアメッシュの最適化。 このプラットフォームはMedia Meshを活用し、各参加者を最寄りの地域データセンターにあるメディアルーターに接続することで、ルーティングされたセッションを自動的に最適化します。これにより、特に地理的に分散したセッションにおいて、遅延が低減され、品質が向上します。
Media Mesh はデフォルトで有効になっており、設定は不要です。この最適化を無効にして、メディアを特定の地域に限定するには、以下を参照してください。 地域メディアゾーン.
-
適応型メディアルーティング。 OpenTok.js v2.24.7 およびその他のクライアント SDK(Android、iOS、Windows、macOS、Linux、React Native 用)の v2.27.0 以降では、ルーティングされたセッションが以下を使用するように最適化されています。 アダプティブ・メディア・ルーティング、可能であれば。アダプティブ・メディア・ルーティングは、1対1のビデオストリーミングにおいて、OpenTok Media Router を使用せずにメディアを中継できるかどうかを判断し、2人の参加者間のメディアパフォーマンスを最適化します。 ルーティングされたセッションでは、必要に応じて自動的にメディアルーティングが適応され、OpenTok Media Router が使用されます。これには、3名以上の参加者がいるセッション、アーカイブ、ライブストリーミング放送、SIP相互接続、Experience Composer、Live Captions、および Audio Connector が含まれます。
アダプティブ・メディア・ルーティング機能が追加されたことで、さらに
scalableVideoOpenTok.js のオプションOT.initPublisher()メソッドを使うことで、ルーティングされたセッションのパブリッシャーに対して、 デフォルトを上書きしてスケーラブルビデオを無効にすることができます。
アダプティブ・メディア・ルーティング
アダプティブ・メディア・ルーティング(AMR)は、以下のようなパフォーマンスの最適化である。 ルーティングセッション.AMRは各パブリッシャーの加入者数を個別に評価する。パブリッシャーに加入者が1人しかおらず、メディアルーターを必要とする機能(アーカイブ、ライブストリーミング、SIPなど)が使用されていない場合、プラットフォームはそのパブリッシャーのメディアをメディアルーター経由でルーティングする代わりに、加入者にピアツーピアでリレーします。これにより、待ち時間が短縮され、オーディオとビデオの品質が向上します。
セッションは常にルーティングされたセッションのままである。 AMRはセッションのメディアモードを変更しない。 メディアパス を使用します。アプリケーション・コード、トークン、サーバー側のセッション構成はまったく同じです。ピアツーピア中継とメディア・ルーター中継の切り替えは、クライアントSDKによって透過的に処理されます。
AMRがピアツーピア中継を使用する場合
AMRは、次のような場合、パブリッシャーとその加入者間でメディアを直接リレーする(メディアパスでメディアルーターをバイパスする)。 すべて 次のうちどれかが当てはまる:
- 出版社はまさに 一加入者.
- 次のセクションに記載されている機能はいずれもアクティブではない。
例えば、4つのパブリッシャーと4つのサブスクライバーを持つセッションは、各 パブリッシャーにサブスクライバーが1人しかおらず、メディアルーター機能が使 用されていない限り、完全にピアツーピア中継のままであることができる。
AMRがメディア・ルーターに切り替わるとき
プラットフォームは、以下の場合にパブリッシャーのメディアをメディアルーターを経由するように移行します。 いずれも 以下の条件のいずれかが適用される:
- パブリッシャーには複数のサブスクライバーが存在します(たとえば、2人目のクライアントが同じ公開ストリームを購読している場合など)。
- アーカイブ が開始される(自動アーカイブが有効になっているセッションを含む)。
- ライブストリーミング放送 が始まる。
- SIP相互接続 が使われている。
- エクスペリエンス・コンポーザー がセッションをレンダリングしている。
- オーディオ・コネクター がアクティブである。
- ライブ・キャプション が有効になっている。
いずれかのトリガーがアクティブになると、すべてのパブリッシャーのメディアはメディアルーターを通じてシームレスにルーティングされます。
SDKサポート
AMRは、OpenTok.js v2.24.7およびAndroid、iOS、Windows、macOS、Linux、React Native向けClient SDKのバージョン2.27.0で導入されました。ルーティングされたセッションにおいて、古いバージョンのClient SDKを使用しているクライアントは、常にMedia Routerを使用します。
デバッグと開発への影響
AMRはアプリケーション・ロジックに対して透過的ですが、開発やトラブルシューティングの際に注意すべき点がいくつかあります:
- インスペクター 誤って表示される可能性がある
clientDisconnectionパブリッシャーのメディアがピアツーピア中継からメディアルーターへの移行が行われる際のイベント(たとえば、2人目のクライアントがストリームを購読した場合など)。これらのイベントは実際の接続切断を表すものではありません。移行中も参加者は接続されたままです。これはInspectorにおける既知の問題です。 - MediaStream オブジェクトは、遷移中に変更される場合があります。AMR がピアツーピア中継とメディアルーターの間で切り替わる際、その基盤となる
MediaStreamを置き換えます。アプリケーションからMediaStreamオブジェクトを直接レンダリングします。<video>要素)を変更する場合は、以下のいずれかでこの変更を処理しなければならない:- おすすめ:以下の機能をご利用ください メディアストリーム利用可能API (OpenTok.js v2.27.7+ で利用可能)。その
mediaStreamAvailableパブリッシャーおよびサブスクライバー・オブジェクトのイベントは、AMRによって引き起こされた変更を自動的にアカウントし、正しいMediaStreamトランジションが起こるたびに。 - 従来のアプローチ(v2.27.7以前):
playイベントがサブスクライバのvideoエレメントに発生したことを検出する。MediaStreamを置き換え、それに応じてカスタムレンダリングを更新してください。カスタムレンダリングを更新するには サブスクライバのMediaStreamオブジェクトへのアクセス を案内する。
- おすすめ:以下の機能をご利用ください メディアストリーム利用可能API (OpenTok.js v2.27.7+ で利用可能)。その
- 接続およびストリームイベントは通常通り発生し続けます。セッションのイベントリスナーで AMR の遷移を処理する必要はありません。
streamCreated,streamDestroyed,connectionCreatedそしてconnectionDestroyedイベントは参加者の実際の状態を反映するものであり、根本的なメディア経路を反映するものではない。
他の機能との相互作用
- シングルピア接続(SPC): SPCは、メディアがメディアルーターを経由して流れる場合にのみ有効になります。AMRがパブリッシャーのメディアをピアツーピアで中継している間は、そのストリームにはSPCは適用されません。ストリームがメディアルーターに移行すると、SPCが有効になっている場合は、SPCが適用されます。
- エンド・ツー・エンドの暗号化: エンドツーエンド暗号化はAMRでも機能します。メディアは、ピアツーピアで送信されるか、メディアルーターを経由するかに関わらず、暗号化されます。
- 音声の代替再生: 加入者音声フォールバック はメディア・ルーターの機能であり、ストリームがメディア・ルーター を経由すると、通常は適用される。ただし、AMRがパブリッシャーのメディアをピア・ツー・ピアで中継している間は、この機能は適用されない、 パブリッシャー・オーディオのフォールバック は、必要に応じて、オーディオストリームを保護するためにビデオを自動的に無効にする。ストリームがメディア・ルーターに移行すると、パブリッシャーとサブスクライバーの両方の音声フォールバックが通常通り適用されます。
- サイマルキャストとスケーラビリティ: AMRがメディアをピアツーピアで中継している間、使用されているコーデックに関係なく、スケーラブルビデオは自動的に無効化されます。ストリームがメディアルーターに移行すると、スケーラブルビデオの動作は、コーデックおよびダッシュボード上のアプリケーションのスケーラブルビデオ設定によって異なります:
- VP8である: スケーラブル・ビデオが オン または オート ダッシュボードに表示されるサイマルキャストは、メディア・ルーターへの移行が発生すると、ルーティングされたレグで自動的に有効になります。
- VP9: スケーラブルビデオは、メディアルーターを経由する場合、デフォルトで有効になります。
- H.264: スケーラブルビデオはサポートされておらず、デフォルトではすべてのケースでオフのままです。
アーカイブ・モード
セッションを作成する際、セッションが自動的にアーカイブされるようにアーカイブモードを設定できます。これは、ルーティングされたセッション(OpenTok Media Router を使用するセッション)にのみ適用されます。デフォルトでは、セッションは自動的にアーカイブされません。
場所のヒント
セッションを作成する際、Vonageビデオプラットフォームがグローバルネットワーク内でセッションを制御するための最適なサーバーを選択する際に使用するIPアドレスを設定できます。セッション作成時にロケーションヒントが設定されていない場合(この設定を推奨します)、セッションに最初に接続したクライアントの所在地に基づいて、セッション制御サーバーが選択されます。 ロケーションヒントを設定するのは、おおよその地理的地域(およびその地域を代表するIPアドレス)が分かっている場合で、最初に接続するクライアントがその地域外にある可能性があると思われる場合に限ってください。セッションの地理的場所を代表するIPアドレスを指定してください。
メディアストリーミングの場合、システムは常にロケーションヒントを使用して最も近いメディアサーバー(SFU)に接続し、メディアトラフィックがクライアントの地理的ロケーションに最適なサーバーを経由するようにします。
セッション作成時のベストプラクティス
セッションIDの再利用
可能であれば、異なるビデオチャットの会話間でセッションIDを再利用しないでください。代わりに、アプリケーション上で個別のビデオチャットごとに新しいセッションIDを生成してください。
これは、特にOpenTokを使用する際には重要です インスペクター. Inspector では、セッションの品質スコアとデータはセッション ID ごとにインデックス化されています。複数の会話で同じセッション ID が再利用されている場合、Inspector を使用したデバッグが難しくなります。また、セッション ID が再利用されているセッションでは、実際に体験した通話品質に比べて、集計された品質スコアが低く報告される傾向があります。
セッションの移行を有効にするか、セッションを8時間に制限する
最新のクラウド自動スケーリングでは、サービスの最小回転時間を設定する必要がある。8時間以上続くセッションは、スケールアウトまたはスケールインするサービスに存在する可能性があるため、切断される可能性がある。
Vonage Video APIクライアントSDKのバージョン2.30.0以降には、サーバのローテーション中にセッションの参加者全員を新しいサーバにシームレスに転送するセッション移行機能が含まれています。この機能により、参加者の混乱を最小限に抑え、セッションの継続性が保証されます。参照 サーバーのローテーションとセッションの移行.
クライアントSDKの2.30.0未満のバージョンを使用しているクライアントに対する注意事項: 8時間を超えるセッションの場合、タイムアウトや再接続が発生する可能性がある前に、接続しているユーザーを新しいセッションに移行することをお勧めします。これにより、最高のユーザーエクスペリエンスが保証されます。
また、クライアントは、接続後4時間以内にストリームを公開または購読しない場合、セッションから切断される。
を使うことができる。 セッションモニタリング を使用して、セッションが停止したりタイムアウトしたりしたときや、セッション用の Video API サーバー群のローテーションが予定されているときに通知を受け取ることができます。
詳しくは サーバーのローテーション.
中継セッション・タイプとルーティング・セッション・タイプの選択
参加者が2人(場合によっては3人)のみで、アーカイブ機能を使用していない場合は、ルーティングセッションではなくリレーセッションを使用してください。リレーセッションを使用することで、参加者間の遅延が軽減され、障害発生の要因も減り、ほとんどの場合、より高品質な映像と音声を得ることができます。
セッションをアーカイブしたい場合は、ルーティングされたセッションが必要です。また、セッションの参加者が2~3人を超える場合は、ルーティングされたセッションの利用が推奨されます。
詳しくは OpenTok メディアルーターとメディアモード.
セッションの作成
アプリのテスト版の開発中は、プロジェクトページからテストセッションIDを取得できます。 Video APIアカウント.
また、OpenTokのサーバーサイドライブラリのいずれか、またはOpenTok REST APIを使用してセッションを生成することもできます:
を使用することもできます。 OpenTok REST API セッションを作成するには。
複数のセッションIDを動的に生成する必要がある場合は、OpenTokのサーバーサイドライブラリのいずれか、またはOpenTok REST APIを使用してください。プロジェクトページは使用しないでください。