グループ通話フロー
ここでは、LINE Planetのグループ通話(カンファレンス)のフローについて説明します。
下図では、アプリクライアントとアプリサーバーはアプリケーション側に属しており、PlanetKitとLINE Planet CloudはLINE Planet側に属しています。
グループ通話参加
グループ通話に参加するには、アプリクライアントがjoinConference()
を呼び出す必要があります。ユーザーがグループ通話に参加すると、onConnected
イベントが発生します。
グループ通話に参加するには、ルームIDが必要です。したがって、アプリクライアントはグループ通話に参加する前にアプリケーション通信チャンネルを通じてルームIDを共有する必要があります。
下図はグループ通話に参加する流れを示します。ここではClient 01がグループ音声通話に参加した後、Client Kが通話に参加します。
- Client 01が通話に参加しようとすると、Client 01のアプリクライアントが
joinConference()
を呼び出します。 - Planet CloudはGroup Call Eventコールバックを呼び出して、アプリサーバーに新しいグループ通話を通知します。
- Client 01のアプリクライアントで
onConnected
イベントが発生します。 - Client Kが通話に参加しようとすると、Client Kのアプリクライアントが
joinConference()
を呼び出します。 - Planet CloudはGroup Call Eventコールバックを呼び出し、アプリサーバーにグループ通話のステータス変更を通知します。
- Client 01のアプリクライアントでは
onPeerListUpdated
イベントが発生し、Client KのアプリクライアントではonConnected
、onPeerListUpdated
、onVideoUpdate
イベントが発生します。
ここでは、3つの関連イベントを見ることができます。
イベント | 発生条件 | 説明 |
---|---|---|
onConnected | joinConference() APIが呼び出され、通話が接続された後 | 通話が接続されたことを通知 |
onPeerListUpdated | 誰かがルームに参加または退出した後 | 新しく参加または退出した参加者のリストを渡す |
PlanetKitPeerControlHandler のonVideoUpdate | ピアがビデオをオンまたはオフにした後 | ピアのビデオ状態を渡す |
ピアリストの更新イベント
onPeerListUpdated
イベントは、参加者リストが更新されるたびに、つまり誰かがルームに参加または退出した後に発生します。そのため、Client Kが参加すると、Client 01とClient Kの両方ともこのイベントを受け取ります。このイベントは、新しく参加または退出した参加者のリストを渡します。
新しい参加者に対してonPeerListUpdated
イベントが発生すると、他の参加者はその参加者に対してPlanetKitPeerControl
インスタンスを作成し、そのPlanetKitPeerControl
インスタンスを使用して参加者のステータス変更に基づいて参加者のUIを更新するなどの作業を行うことができます。
ピアビデオの更新イベント
onVideoUpdate
は、参加者のビデオストリームが変わるたびに発生します。
上記の例では、Client 01だけがビデオを送信します。Client KはonVideoUpdate
イベントによって、Client 01がビデオをオンにしたことを知ります。
onVideoUpdate
イベントは、音声通話中にビデオ通話をオンにした場合にも発生することがあります。詳しくは、音声通話中のビデオ通話の有効化を参照してください。
イベントの更新間隔
アプリクライアントは、更新間隔内の最新情報に基づきonPeerListUpdated
とonVideoUpdate
イベントを受け取ります。その結果として、アプリクライアントは、誰かが参加直後に退出する場合など、更新間隔内で発生した急な変更に対するイベントを受信できない場合があります。
LINE Planet Cloudはこれらを内部で更新するスケジューラーを持ち、スケジューリング間隔は現在の参加者数が増えた分だけ長くなります。つまり、参加者数に比例して情報の更新が遅くなることにご注意ください。
ピアビデオのリクエスト
onConnected
イベントが発生した後、アプリクライアントはオーディオストリームを自動で受け取ります。ただし、ビデオストリームは、アプリクライアントが適切なビデオ解像度を定めてPlanetKitPeerControl
のstartVideo()
を呼び出さない限り、LINE Planet Cloudから自動送信されません。
アプリケーションは、PlanetKitPeerControlHandler
のonVideoUpdate
コールバックを通じてビデオストリームを有効にしたのは誰なのかを知ることができます。
PlanetKitがビデオストリーム数に応じて推奨の解像度を使用するstartVideo()
を呼び出す際に、解像度の引数としてrecommended
を使用することをお勧めします。詳しくは、グループ通話のピアビデオ解像度を参照してください。
OSのUIフレームワークによっては、ピアのビデオストリームをレンダリングするためにAPIを追加で呼び出す場合もあります。APIリファレンスを確認してください。
グループ通話退出
グループ通話から退出するには、アプリクライアントがleaveConference()
を呼び出す必要があります。グループ通話から退出したユーザーのアプリクライアントでは、onDisconnected
イベントが発生します。参加者リストが変更されたため、ピアのアプリクライアントではonPeerListUpdated
イベントが発生します。
ビデオがオンになっている参加者
ビデオがオンになっている参加者がルームから退出すると、他の参加者はonVideoUpdate
イベントを受け取ります。
- Client Kが通話から退出しようとすると、Client Kのアプリクライアントが
leaveConference()
を呼び出します。 - Client Kのアプリクライアントでは
onVideoUpdate
イベントとonPeerListUpdated
イベントが発生し、Client 01のアプリクライアントではonDisconnected
イベントが発生します。 - Planet CloudはGroup Call Eventコールバックを呼び出し、アプリサーバーにグループ通話のステータス変更を通知します。
画面共有ビデオを送信していた参加者がルームから退出すると、状態がdisabled
であるPlanetKitPeerControlHandler
のonScreenShareUpdate
が他の参加者に送信されます。
ビデオがオフになっている参加者
ビデオがオフになっている参加者がルームから退出する場合、onVideoUpdate
は発生しません。
- Client Kが通話から退出しようとすると、Client Kのアプリクライアントが
leaveConference()
を呼び出します。 - Client 01のアプリクライアントでは
onPeerListUpdated
イベントが発生し、Client KのアプリクライアントではonDisconnected
イベントが発生します。 - Planet CloudはGroup Call Eventコールバックを呼び出し、アプリサーバーにグループ通話のステータス変更を通知します。
関連API
グループ通話に関連するAPIは次のとおりです。