오디오 리시버
오디오 리시버 기능을 이용하면 실제 오디오 스트림에 영향을 주지 않고 오디오 데이터를 얻을 수 있습니다. 애플리케이션에서는 이 기능을 이용해 오디오 데이터의 복사본을 받아 다양한 용도로 사용할 수 있습니다.
| 지원 통화 유형 | 최소 SDK 버전 |
|---|---|
| 1대1 통화, 그룹 통화(컨퍼런스) | PlanetKit 7.0 |
Note
오디오 리시버를 통해 얻은 오디오 데이터는 VQE 제어가 적용되기 전의 오디오 스트림입니다.
활용 사례
오디오 리시버의 주요 활용 사례는 다음과 같습니다.
- 오디오 분석 및 전사(음성→텍스트 변환)
- 음성 활동 감지(VAD)
- 오디오 품질 모니터링
- 통화 분석 및 지표 수집
- 실시간 오디오 시각화 및 레벨 미터링
- 통화 오디오를 파일로 녹음
구현 단계
오디오 리시버 기능을 구현하려면 다음 단계를 따르세요.
1대1 통화
오디오 리시버 구현
1대1 통화의 오디오 데이터 수신을 위해 ICallAudioReceiver를 상속하는 클래스를 만드세요.
#include "PlanetKit.h"
#include "IPlanetKitCallAudioReceiver.h"
class AudioDataReceiver : public PlanetKit::ICallAudioReceiver {
public:
void OnAudio(const PlanetKit::SAudioData& sAudioData) override {
// Access audio data from SAudioData structure:
// - sAudioData.unAudioDataSamplingRate: Sampling rate
// - sAudioData.unAudioDataSampleCount: Number of samples
// - sAudioData.eAudioDataSampleFormat: Sample format
// - sAudioData.ucBuffer: Pointer to audio data
// - sAudioData.unBufferSize: Size of audio data in bytes
// Use the audio data for your use case
// Note: Copy data if you need it beyond this callback
}
};
오디오 리시버 설정
오디오 데이터 수신을 시작하려면 PlanetKitCall 인스턴스에 리시버를 등록하세요.
// Create receiver instances
PlanetKit::ICallAudioReceiverPtr pMyAudioReceiver = PlanetKit::MakeSharedPtr<AudioDataReceiver>();
PlanetKit::ICallAudioReceiverPtr pPeerAudioReceiver = PlanetKit::MakeSharedPtr<AudioDataReceiver>();
// Register receivers
m_pCall->RegisterMyAudioReceiver(pMyAudioReceiver); // Local user's audio
m_pCall->RegisterPeerAudioReceiver(pPeerAudioReceiver); // Remote peer's audio
오디오 리시버 해제
오디오 데이터 수신을 중지하려면 리시버 등록을 해제하세요.
m_pCall->DeregisterMyAudioReceiver(pMyAudioReceiver);
m_pCall->DeregisterPeerAudioReceiver(pPeerAudioReceiver);
그룹 통화
오디오 리시버 구현
그룹 통화의 오디오 데이터 수신을 위해 IConferenceAudioReceiver를 상속하는 클래스를 만드세요.
#include "PlanetKit.h"
#include "IPlanetKitConferenceAudioReceiver.h"
class ConferenceAudioDataReceiver : public PlanetKit::IConferenceAudioReceiver {
public:
void OnAudio(const PlanetKit::SAudioData& sAudioData) override {
// Access audio data from SAudioData structure:
// - sAudioData.unAudioDataSamplingRate: Sampling rate
// - sAudioData.unAudioDataSampleCount: Number of samples
// - sAudioData.eAudioDataSampleFormat: Sample format
// - sAudioData.ucBuffer: Pointer to audio data
// - sAudioData.unBufferSize: Size of audio data in bytes
// Use the audio data for your use case
// Note: Copy data if you need it beyond this callback
}
};
오디오 리시버 설정
오디오 데이터 수신을 시작하려면 PlanetKitConference 인스턴스에 리시버를 등록하세요.
// Create receiver instances
PlanetKit::IConferenceAudioReceiverPtr pMyAudioReceiver = PlanetKit::MakeSharedPtr<ConferenceAudioDataReceiver>();
PlanetKit::IConferenceAudioReceiverPtr pPeerAudioReceiver = PlanetKit::MakeSharedPtr<ConferenceAudioDataReceiver>();
// Register receivers
m_pConference->RegisterMyAudioReceiver(pMyAudioReceiver); // Local user's audio
m_pConference->RegisterPeersAudioReceiver(pPeerAudioReceiver); // Mixed audio from all peers
오디오 리시버 해제
오디오 데이터 수신을 중지하려면 리시버 등록을 해제하세요.
m_pConference->DeregisterMyAudioReceiver(pMyAudioReceiver);
m_pConference->DeregisterPeersAudioReceiver(pPeerAudioReceiver);
관련 API
오디오 리시버 기능과 관련된 API는 다음과 같습니다.
1대1 통화
-
ICallAudioReceiver -
PlanetKitCall::RegisterMyAudioReceiver() -
PlanetKitCall::RegisterPeerAudioReceiver() -
PlanetKitCall::DeregisterMyAudioReceiver() -
PlanetKitCall::DeregisterPeerAudioReceiver()
그룹 통화
-
IConferenceAudioReceiver -
PlanetKitConference::RegisterMyAudioReceiver() -
PlanetKitConference -
PlanetKitConference::DeregisterMyAudioReceiver() -
PlanetKitConference