サブグループの基本概念
サブグループ(subgroup)は、グループ通話(カンファレンス)内の小グループです。
対応する通話タイプ | SDKの最低バージョン |
---|---|
グループ通話 | PlanetKit 3.6 |
LINE Planetでは、新しいグループ通話に出入りすることを「参加する/退出する」といい、グループ通話中に新しいサブグループに出入りすることを「加入する/退会する」といいます。そしてサブグループに加入した参加者を「サブグループメンバー」と呼びます。
サブグループメンバーになることは、サブグループのメディアを受信でき、自分のメディアをサブグループに送信できることを意味します。サブグループに加入したサブグループメンバーは、所属するサブグループにメディアを送信できます。ただし、サブグループから退会する前に、送信していたすべてのメディアの送信を中断しなければなりません。
参加者は複数のサブグループに加入できますが、1つのグループ通話で作成できるサブグループ数には上限があります。
サブグループにおけるメディアの流れ
サブグループに加入するということは、以下のことを意味します。
- サブグループにメディアを送信できる
- サブグループからのメディアを受信できる
メインルーム(main room)からのメディアは、サブグループに加入しているかどうかに関わらず、すべての参加者に転送されます。
上図は、サブグループにおけるメディアの流れの概要を示しています。
サブグループメンバーを含めてすべての参加者は、メインルームへメディアを送信したり、メインルームのメディアを受信したりすることができます。しかし、サブグループでは、サブグループメンバーだけがメディアを送受信できます。 メディアは1つのサブグループまたはメインルーム(メインルームは特別なサブグループを意味する)に対してのみ送信できます。つまち、PlanetKitは同時に複数のサブグループに対してメディアを送信しません。ただし、以下のように複数のサブグループからメディアを受信することはできます。
- メインルームからは常にメディアを受信できる
- 加入したサブグループからメディアを受信できる
メディアを送受信する
サブグループにメディアを送信したり、サブグループのメディアを受信したりするには、次のAPIを呼び出します。
送信 | 受信 | |
---|---|---|
オーディオ | changeMyAudioDestination() | 加入後に自動受信する |
ビデオ | changeMyVideoDestination() | PlanetKitPeerControl のstartVideo() |
送信
PlanetKitは、メディア送信先のサブグループを設定するchangeMyAudioDestination()
およびchangeMyVideoDestination()
を提供します。changeMyAudioDestination()
またはchangeMyVideoDestination()
を呼び出すと、既存の送信を中断し、新しいサブグループにメディアを送信します。各メディアの送信先は独立しているため、オーディオやビデオをそれぞれ異なるサブグループに送信できます。
受信
メディアの受信シナリオはメディアタイプによって異なります。オーディオは、加入後に自動で受信します。一方、ビデオの場合は、ユーザーがビデオを見ようとしたときにPlanetKitPeerControl
のstartVideo()
を呼び出す必要があります。
これは、joinConference()
呼び出し後にメインルームでメディアを受信する場合と同じ方法です。
PlanetKitPeerControl
の使い方について詳しくは、グループビデオ通話のサンプルコードを参照してください。
サブグループの属性
サブグループには3つの属性があり、すべてのサブグループメンバーは同じサブグループの属性値を持つ必要があります。他のサブグループの属性値を持つ参加者は、サブグループに加入できません。サブグループAPIアプリケーションガイドを参照してください。
サブグループの属性とその定義は以下のとおりです。
属性 | 説明 |
---|---|
peerUpdate | サブグループメンバーうリストの共有範囲 |
videoUpdate | ビデオ更新イベントを受信するかどうか |
dataSession | データセッションを有効にするかどか |
アプリケーションは、設計の段階ですべてのサブグループに対して、サブグループの属性値を定義する必要があります。サブグループの属性値の定義について詳しくは、例:複数のサブグループと例:通訳を参照してください。
peerUpdate
peerUpdateは、参加者にサブグループメンバーのリストを共有する方法を定義します。以下の3種類があります。
- PUBLIC:すべての参加者にサブグループメンバーのリストを共有
- PRIVATE:同じサブグループメンバーだけにサブグループメンバーのリストを共有
- NONE:サブグループメンバーのリストを共有しない
種類によって発生するイベントが変わることもあります。下表は、peerUpdateの種類ごとに発生する可能性のあるイベントを示しています。
PUBLIC | PRIVATE | NONE | |
---|---|---|---|
サブグループメンバー(自ら加入したメンバーまたは追加されたメンバー) | peerListDidUpdate peersDidUpdatePublicSubgroup | peerListDidUpdate | なし |
メンバーではない(未加入の参加者) | peersDidUpdatePublicSubgroup | なし | なし |
videoUpdate
videoUpdateは、サブグループのメンバーがビデオストリームを開始したときに、サブグループの他のメンバーがそのビデオをリクエストできるように通知するかどうかを決定します。
- videoUpdateがTRUEの場合、サブグループメンバーがビデオストリームを開始したことを知らせる
peersVideoDidUpdate
イベントが発生する - videoUpdateがFALSEの場合、サブグループメンバーがビデオストリームを開始しても
peersVideoDidUpdate
イベントは発生しない
dataSession
dataSessionは、サブグループ内のデータセッションや画面共有を使用するかどうかを決定します。サブグループ内でデータセッションまたは画面共有を使用するには、必ずdataSessionをTRUEに設定する必要があります。「サブグループ内」とは、同じサブグループだけにデータを送信するという意味です。
詳しくは、データセッションとプレゼンテーション - 画面共有を参照してください。
関連ドキュメント
サブグループ機能を連携する前に、以下のドキュメントを参照してください。
- サブグループフローは、サブグループAPI関数の呼び出し順やメディアの流れなど全般的な内容を示します。 サブグループAPIの簡単な使い方を知ることができます。 実際にプログラミングする際には、APIリファレンス (iOS、macOS)を参照する必要があります。
- サブグループ機能を使用する際に確認すべきチェックリストについては、サブグループAPIアプリケーションガイドを参照してください。
このほかにも、サブグループ機能を使用する例を提供します。