음 소거 상태 공유 및 제어
음 소거란 마이크로 입력된 오디오의 전송을 비활성화하는 것을 말합니다. 로컬 오디오를 음 소거하거나 음 소거 해제하고 애플리케이션의 음 소거 상태를 피어와 공유할 수 있습니다. 또한 특정 피어 또는 모든 피어에게 음 소거하거나 음 소거 해제하도록 요청할 수도 있습니다.
PlanetKit 6.0 이전에는 음 소거 제어가 마이크의 작동에는 직접적인 영향을 미치지 않았습니다. 하지만 PlanetKit 6.0부터 음 소거 제어가 다음과 같이 마이크를 제어합니다.
- 로컬 오디오를 음 소거하면 PlanetKit이 마이크를 끄고 오디오 전송을 비활성화하여 마이크 표시기(microphone indicator)가 꺼집니다.
- 로컬 오디오의 음 소거를 해제하면 PlanetKit이 마이크를 켜고 오디오 전송을 활성화하여 마이크 표시기가 켜집니다.
로컬 오디오 음 소거 제어 및 공유
통화 유형별로 로컬 오디오를 음 소거하거나 음 소거 해제하는 방법을 설명합니다.
1대1 통화
1대1 통화에서 로컬 오디오를 음 소거하거나 음 소거 해제하려면 MuteMyAudio()를 사용하세요. 로컬 오디오의 음 소거 상태 변경은 OnPeerMicMuted 또는 OnPeerMicUnmuted를 통해 피어에게 전달됩니다.
다음 다이어그램은 1대1 통화에서 로컬 오디오를 음 소거 및 음 소거 해제하는 흐름을 보여줍니다.
관련된 샘플 코드는 다음과 같습니다.
로컬 오디오 음 소거 또는 음 소거 해제하기
// bMute: true for mute, false for unmute
void MuteMyAudioExample(PlanetKit::PlanetKitCallPtr pCall, bool bMute)
{
std::wcout << L"MuteMyAudio(bMute=" << (bMute ? L"true" : L"false") << L")" << std::endl;
pCall->MuteMyAudio(bMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
피어 측에서 관련 이벤트 처리하기
class CallEventListener : public PlanetKit::ICallEvent {
public:
...
void OnPeerMicMuted(PlanetKitCallPtr pPlanetKitCall) override {
// This is called when the peer changed their microphone status to be muted.
// Write your own code here.
}
void OnPeerMicUnmuted(PlanetKitCallPtr pPlanetKitCall) override {
// This is called when the peer changed their microphone status to be unmuted.
// Write your own code here.
}
}
그룹 통화
그룹 통화에서 로컬 오디오를 음 소거하거나 음 소거 해제하려면 MuteMyAudio()를 사용하세요. 로컬 오디오의 음 소거 상태 변경은 OnPeersMicMuted 또는 OnPeersMicUnmuted를 통해 피어에게 전달됩니다.
다음 다이어그램은 그룹 통화에서 로컬 오디오를 음 소거 및 음 소거 해제하는 흐름을 보여줍니다.
관련된 샘플 코드는 다음과 같습니다.
로컬 오디오 음 소거 또는 음 소거 해제하기
// bMute: true for mute, false for unmute
void MuteMyAudioExample(PlanetKit::PlanetKitConferencePtr pConference, bool bMute)
{
std::wcout << L"MuteMyAudio(bMute=" << (bMute ? L"true" : L"false") << L")" << std::endl;
pConference->MuteMyAudio(bMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
피어 측에서 관련 이벤트 처리하기
class ConferenceEventListener : public PlanetKit::IConferenceEvent {
public:
...
void OnPeersMicMuted(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& peerArray) override {
// This is called when one or more peers changed their microphone status to be muted.
// Write your own code here.
}
void OnPeersMicUnmuted(PlanetKitConferencePtr pPlanetKitConference, const PeerArray& peerArray) override {
// This is called when one or more peers changed their microphone status to be unmuted.
// Write your own code here.
}
}
원격 오디오 음 소거 요청
통화 유형별로 원격 오디오의 음 소거 또는 음 소거 해제를 요청하는 방법을 설명합니다.
피어가 요청을 받았을 때 오디오를 음 소거하거나 음 소거 해제해야 하는지 여부는 구현에 따라 다릅니다.
아래 예시에서는 피어가 요청에 따라 음 소거하거나 음 소거 해제한다고 가정합니다.
1대1 통화
1대1 통화에서 피어에게 음 소거 또는 음 소거 해제를 요청하려면 RequestPeerMute()를 사용하세요. 이 요청은 OnReceivedMuteMyAudioRequest를 통해 피어에게 전달되며, 원격 오디오의 음 소거 상태 변경은 OnPeerMicMuted 또는 OnPeerMicUnmuted를 통해 로컬 사용자에게 전달됩니다.
다음 다이어그램은 1대1 통화에서 원격 오디오의 음 소거 및 음 소거 해제를 요청하는 흐름을 보여줍니다.
관련된 샘플 코드는 다음과 같습니다.
원격 오디오 음 소거 또는 음 소거 해제 요청하기
// bMute: true for mute, false for unmute
void RequestPeerMuteExample(PlanetKit::PlanetKitCallPtr pCall, bool bMute)
{
std::wcout << L"RequestPeerMute(bMute=" << (bMute ? L"true" : L"false") << L")" << std::endl;
pCall->RequestPeerMute(bMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
피어 측에서 관련 이벤트 처리하기
class CallEventListener : public PlanetKit::ICallEvent {
public:
...
// This is called when the peer requests the local user to mute or unmute the microphone.
void OnReceivedMuteMyAudioRequest(PlanetKitCallPtr pPlanetKitCall, bool bEnableMute) override {
std::wcout << L"MuteMyAudio(bMute=" << (bEnableMute ? L"true" : L"false") << L")" << std::endl;
pPlanetKitCall->MuteMyAudio(bEnableMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
}
그룹 통화
그룹 통화에서는 특정 피어 또는 모든 피어에게 오디오를 음 소거하거나 음 소거 해제하도록 요청할 수 있습니다.
- 특정 피어에게 음 소거 또는 음 소거 해제하도록 요청하려면
RequestPeerMute()를 사용하세요. - 모든 피어에게 음 소거 또는 음 소거 해제하도록 요청하려면
RequestPeersMute()를 사용하세요.
이 요청은 OnReceivedMuteMyAudioRequest를 통해 피어에게 전달되며, 원격 오디오의 음 소거 상태 변경은 OnPeersMicMuted 또는 OnPeersMicUnmuted를 통해 로컬 사용자에게 전달됩니다.
다음 다이어그램은 그룹 통화에서 원격 오디오의 음 소거 및 음 소거 해제를 요청하는 흐름을 보여줍니다.
관련된 샘플 코드는 다음과 같습니다.
원격 오디오 음 소거 또는 음 소거 해제 요청하기
// Request mute for single peer
// bMute: true for mute, false for unmute
void RequestPeerMuteExample(PlanetKit::PlanetKitConferencePtr pConference, PlanetKit::UserIdPtr pPeerId, bool bMute)
{
std::wcout << L"RequestPeerMute(bMute=" << (bMute ? L"true" : L"false") << L")" << std::endl;
pConference->RequestPeerMute(pPeerId, bMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L"RequestPeerMute(bMute=" << (bMute ? L"true" : L"false")
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
// Request mute for all peers
// bMute: true for mute, false for unmute
void RequestPeersMuteExample(PlanetKit::PlanetKitConferencePtr pConference, bool bMute)
{
std::wcout << L"RequestPeersMute(bMute=" << (bMute ? L"true" : L"false") << L")" << std::endl;
pConference->RequestPeersMute(bMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
피어 측에서 관련 이벤트 처리하기
class ConferenceEventListener : public PlanetKit::IConferenceEvent {
public:
...
// This is called when the peer requests the local user to mute or unmute the microphone.
void OnReceivedMuteMyAudioRequest(PlanetKitConferencePtr pPlanetKitConference, PeerPtr pPeer, bool bEnableMute) override {
std::wcout << L"MuteMyAudio(bMute=" << (bEnableMute ? L"true" : L"false") << L")" << std::endl;
pPlanetKitConference->MuteMyAudio(bEnableMute, nullptr, [](void*, bool bSuccess) {
std::wcout
<< L") result: " << (bSuccess ? L"true" : L"false")
<< std::endl;
});
}
}
관련 API
음 소거 제어 및 상태 공유와 관련된 API는 다음과 같습니다.
1대1 통화
메서드
이벤트
그룹 통화
메서드
-
PlanetKitConference::MuteMyAudio() -
PlanetKitConference::RequestPeerMute() -
PlanetKitConference::RequestPeersMute()