サブグループフロー
ここでは、グループ通話(カンファレンス)内でサブグループを使用する際の流れについて説明します。
参加者がサブグループのメンバーになるためには、サブグループへの加入(subscription)をリクエストする必要があります。加入したサブグループから退会する際には、サブグループにメディアを送信しないように設定してから退会をリクエストしなければなりません。
サブグループに加入したメンバーは、自分のオーディオとビデオの送信先を制御できます。何もしない場合、オーディオとビデオの流れは変わりません。
加入する
サブグループに加入するには、SubscribeSubgroup()
を呼び出します。
下図は、サブグループ加入の流れを示したフローチャートです。この例では、Client 01とClient 02という2人の参加者がいると仮定します。その2人はメインルーム(main room)で通信中です。
上記の手順で、2人の参加者はサブグループKに加入した後も、メインルームでお互いにコミュニケーションをとることができます。このとき、メインルームにいる他の参加者にメディアが表示されます。
下表は、ESubGroupPeerUpdateType
タイプごとに発生する可能性のあるイベントを示しています。
PUBLIC | PRIVATE | NONE | |
---|---|---|---|
サブグループメンバー(自ら加入したメンバーまたは追加されたメンバー) | OnPeerListUpdate OnPublicSubgroupUpdated | OnPeerListUpdate | なし |
メンバーではない(未加入の参加者) | OnPublicSubgroupUpdated | なし | なし |
オーディオ
サブグループに加入したメンバーは、そのサブグループのオーディオストリームを自動で受け取ります。ただし、自分のオーディオストリームをサブグループに変更して転送するには、ChangeMyAudioDestination()
を呼び出す必要があります。
下図は、ChangeMyAudioDestination()
を呼び出す際に、オーディオの流れと受信するオーディオ情報が変わる様子を示しています。ユーザーがメインルームとサブグループから受信するオーディオ情報は、ボックスの形で図に示されています。
グループ通話には3人の参加者Client 01、Client 02、Client 03がいます。そしてClient 01とClient 02は、サブグループKのメンバーです。Client 01とClient 02がサブグループKに加入していますが、サブグループKにオーディオを送信している人はいないため、現在サブグループから受信できるオーディオは存在しません。
自分のオーディオ送信先とメインルームおよびサブグループから受信するオーディオは、以下のとおりです。
- Client 01が
ChangeMyAudioDestination()
を呼び出す- Client 01
- オーディオの送信先:メインルーム → サブグループK
- メインルームで受信したオーディオ:Client 02 + Client 03
- サブグループKで受信したオーディオ:なし
- Client 02
- オーディオの送信先:メインルーム
- メインルームで受信したオーディオ:Client 03
- サブグループKで受信したオーディオ:Client 01
- Client 03
- オーディオの送信先:メインルーム
- メインルームで受信したオーディオ:Client 02
- Client 01
- Client 02が
ChangeMyAudioDestination()
を呼び出す- Client 01
- オーディオの送信先:サブグループK
- メインルームで受信したオーディオ:Client 03
- サブグループKで受信したオーディオ:Client 02
- Client 02
- オーディオの送信先:メインルーム → サブグループK
- メインルームで受信したオーディオ:Client 03
- サブグループKで受信したオーディオ:Client 01
- Client 03
- オーディオの送信先:メインルーム
- メインルームで受信したオーディオ:なし
- Client 01
ビデオ
サブグループへ加入後には、PeerControl::StartVideo()
を利用して、どのサブグループからビデオを受信するかを制御できます。
PeerControl
の使い方について詳しくは、グループビデオ通話のサンプルコードを参照してください。
StartVideo()
の使い方については、グループ通話フロー - ピアビデオのリクエストを参照してください。
自分のビデオを送信するサブグループを変更するには、ChangeMyVideoDestination()
を呼び出します。
画面共有
プレゼンテーションを開始する方法については、プレゼンテーション - 画面共有を参照してください。サブグループ内でプレゼンテーションを行うときも方法は同じです。
- サブグループ内の画面共有はPlanetKit 4.1以上のバージョンから対応します。
- ピアの画面共有ビューで画面共有ビデオを制御するために、
PeerControl
のメソッドを使用することができます。画面共有ビデオ制御のためにPeerControl
を使用する方法について詳しくは、グループ通話画面共有のサンプルコードを参照してください。
加入手続きが完了したら、発表者は適切なサブグループ名を指定してStartMyScreenShare()
を呼び出します。参加者はPeerControl::StartScreenShare()
を呼び出し、発表者の画面共有ビデオを受け取ることができます。ChangeMyScreenShareDestination()
メソッドを利用して、共有画面の送信するサブグループを変更できます。下図を確認してください。
オーディオやビデオなどのメディアと同様に、画面共有もサブグループから退会する前に共有を中断する必要があります。
退会する
サブグループから退会するには、UnsubscribeSubgroup()
を呼び出します。ただし、その前にサブグループに送信するすべてのメディアの送信を中断する必要があります。
Client 01がサブグループKから退会する過程を見てみましょう。ここではプレゼンテーションを行わない前提ですが、プレゼンテーションを行う場合もオーディオやビデオを処理するときと同じように画面共有を処理します。
サブグループから退会するために、アプリケーションはメディアの送信先を変更し、UnsubscribeSubgroup()
を呼び出す作業を進めます。
- Client 01がメディアの送信先を変更する
- オーディオをメインルームに送信するために
ChangeMyAudioDestinationToMainRoom()
を呼び出す - ビデオをメインルームに送信するために
ChangeMyVideoDestinationToMainRoom()
を呼び出す
- オーディオをメインルームに送信するために
- Client 01が
UnsubscribeSubgroup()
を呼び出して退会する
関連API
サブグループに関連するAPIは次のとおりです。
Enum
メソッド
-
SubscribeSubgroup()
-
UnsubscribeSubgroup()
-
ChangeMyAudioDestination()
-
ChangeMyAudioDestinationToMainRoom()
-
StartVideo()
-
ChangeMyVideoDestination()
-
ChangeMyVideoDestinationToMainRoom()
-
StartMyScreenShare()
-
StartScreenShare()
-
ChangeMyScreenShareDestination()
イベント
-
OnPeerListUpdate
-
OnPublicSubgroupUpdated
-
OnPeersVideoUpdated
-
OnVideoUpdated
-
IConferenceEvent::OnPeerScreenShareUpdated
-
IPeerControlEvent::OnScreenShareUpdated
関連ドキュメント
より詳細な情報が記載されているサブグループの基本概念も参照してください。