서브그룹 기본 개념
서브그룹(subgroup)은 그룹 통화(컨퍼런스) 내의 작은 모임입니다.
지원 통화 유형 | 최소 SDK 버전 |
---|---|
그룹 통화 | PlanetKit 3.6 |
LINE Planet에서는 새 그룹 통화에 들어가거나 나갈 때는 '입장/퇴장', 그룹 통화 도중에 새 서브그룹에 들어가거나 나갈 때는 '가입/탈퇴'라는 단어를 사용합니다. 참여자가 서브그룹에 가입하면, 그 참여자를 '서브그룹 멤버'라고 부릅니다.
서브그룹 멤버가 된다는 것은, 서브그룹의 미디어를 받을 수 있고 자신의 미디어를 서브그룹에 보낼 수 있다는 뜻입니다. 서브그룹에 가입한 서브그룹 멤버는 속한 서브그룹에 미디어를 보낼 수 있습니다. 단, 서브그룹에서 탈퇴하기 전에는 보내던 미디어를 모두 중지해야 합니다.
참여자는 여러 서브그룹에 가입할 수 있지만, 한 그룹 통화에서 생성할 수 있는 서브그룹 수에는 제한이 있습니다.
서브그룹 미디어 흐름 개념
서브그룹에 가입한다는 것은 다음을 뜻합니다.
- 서브그룹에 미디어를 보낼 수 있습니다.
- 서브그룹에서 오는 미디어를 받을 수 있습니다.
기본 방(main room)에서 오는 미디어는 서브그룹 가입 여부와 상관 없이 모든 참여자에게 전달됩니다.
위 그림은 서브그룹 미디어 흐름의 개요를 보여줍니다.
서브그룹 멤버를 포함한 모든 참여자는 기본 방으로 미디어를 보내거나 기본 방의 미디어를 받을 수 있습니다. 하지만 서브그룹에서는 서브그룹 멤버만이 미디어를 보내고 받을 수 있습니다.
미디어는 한 서브그룹 또는 기본 방(기본 방이란 특별한 서브그룹을 의미)으로만 보낼 수 있습니다. 다시 말해, PlanetKit은 동시에 여러 서브그룹으로 미디어를 보내지 않습니다. 단, 다음처럼 여러 서브그룹에서 미디어를 받을 수 있습니다.
- 기본 방으로부터는 항상 미디어를 받을 수 있습니다.
- 가입한 서브그룹으로부터 미디어를 받을 수 있습니다.
미디어 전송 및 수신하기
서브그룹으로 미디어를 전송하거나 서브그룹의 미디어를 수신하려면 다음 API를 호출해야 합니다.
전송 | 수신 | |
---|---|---|
오디오 | ChangeMyAudioDestination() | 가입 후 자동으로 수신함 |
비디오 | ChangeMyVideoDestination() | PeerControl::StartVideo() |
전송
PlanetKit은 미디어를 보낼 대상 서브그룹을 설정하는 ChangeMyAudioDestination()
과 ChangeMyVideoDestination()
을 제공합니다. ChangeMyAudioDestination()
또는 ChangeMyVideoDestination()
을 호출하면, 기존 전송을 중지하고 새로운 서브그룹으로 미디어를 보냅니다. 각 미디어의 목적지는 독립적이므로, 오디오나 비디오를 각각 다른 서브그룹으로 보낼 수 있습니다.
수신
미디어 수신 시나리오는 미디어 유형에 따라 다릅니다. 오디오는 가입 후 자동으로 수신합니다. 반면, 비디오의 경우 사용자가 비디오를 보고자 할 때 PeerControl::StartVideo()
를 호출해야 합니다.
이는 JoinConference()
호출 후 기본 방에서 미디어를 수신할 때와 동일한 방식입니다.
PeerControl
사용 방법에 대한 자세한 내용은 그룹 영상 통화 예제 코드를 참고하세요.
서브그룹 속성
서브그룹에는 3가지 속성이 있으며, 모든 서브그룹 멤버는 같은 서브그룹 속성값을 가져야 합니다. 다른 서브그룹 속성값을 가진 참여자는 서브그룹에 가입할 수 없습니다. 서브그룹 API 애플리케이션 가이드를 참고하세요.
서브그룹 속성과 그 정의는 다음과 같습니다.
속성 | 설명 |
---|---|
peerUpdate | 서브그룹 멤버 목록 공유 범위 |
videoUpdate | 비디오 갱신 이벤트 수신 여부 |
dataSession | 데이터 세션 활성화 여부 |
애플리케이션은 설계 단계에서 모든 서브그룹에 서브그룹 속성값을 정의해야 합니다. 서브그룹 속성값 정의와 관련된 자세한 내용은 예제: 여러 서브그룹과 예제: 통역 방를 참고하세요.
peerUpdate
peerUpdate는 서브그룹 멤버 목록을 참여자에게 공유하는 방법을 정의합니다. 다음 3종류가 있습니다.
- PUBLIC: 모든 참여자에게 서브그룹 멤버 목록 공유
- PRIVATE: 같은 서브그룹 멤버에게만 서브그룹 멤버 목록 공유
- NONE: 서브그룹 멤버 목록 공유하지 않음
종류에 따라 어떤 이벤트를 발생할 것인지 달라지기도 합니다. 아래 표는 peerUpdate 종류별로 발생할 수 있는 이벤트를 보여줍니다.
PUBLIC | PRIVATE | NONE | |
---|---|---|---|
서브그룹 멤버 (스스로 가입했거나 추가한 멤버) | OnPeerListUpdate OnPublicSubgroupUpdated | OnPeerListUpdate | 없음 |
멤버 아님 (가입하지 않은 참여자) | OnPublicSubgroupUpdated | 없음 | 없음 |
videoUpdate
videoUpdate는 서브그룹 멤버가 비디오 스트림을 시작하면 서브그룹의 다른 멤버가 그 비디오를 요청할 수 있도록 알려줄지 말지를 결정합니다.
- videoUpdate가 TRUE이면 서브그룹 멤버가 비디오 스트림을 시작했음을 알려주는
OnPeersVideoUpdated
이벤트가 발생합니다. - videoUpdate가 FALSE이면 서브그룹 멤버가 비디오 스트림을 시작하더라도
OnPeersVideoUpdated
이벤트가 발생하지 않습니다.
dataSession
dataSession은 서브그룹 내 데이터 세션이나 화면 공유를 사용할지 말지 결정합니다. 서브그룹 내에서 데이터 세션 또는 화면 공유를 사용하려면 반드시 dataSession을 TRUE로 설정해야 합니다. 여기서 '서브그룹 내'라는 말은 같은 서브그룹에만 데이터를 전송한다는 뜻입니다.
상세한 내용은 데이터 세션과 프레젠테이션 - 화면 공유를 참고하세요.
관련 문서
서브그룹 기능을 연동하기 전에 아래 문서를 참고하세요.
- 서브그룹 흐름은 전반적인 서브그룹 API 함수 호출 순서와 미디어 흐름을 보여줍니다. 이를 통해 서브그룹 API 사용법을 간략히 알 수 있습니다. 단, 실제로 프로그래밍할 때는 API 레퍼런스를 참고해야 합니다.
- 서브그룹 API 애플리케이션 가이드에서는 서브그룹 기능을 사용할 때 확인해야 할 체크리스트를 볼 수 있습니다.
이 밖에도 서브그룹 기능을 사용한 예제 2개를 제공합니다.