本文にスキップする
Under translation
このページは現在翻訳中です。
Version: 7.0

Audio receiver

The audio receiver feature provides a way to get audio data without affecting the actual audio stream. This feature allows your application to receive copies of audio data and use the data for various purposes.

Supported call typeMinimum SDK version
1-to-1 call, group call (conference)PlanetKit 7.0
Note

Audio data obtained through the audio receiver feature is an unprocessed audio stream before VQE control is applied.

Use cases

The main use cases for audio receivers are as follows.

  • Audio analysis and transcription
  • Voice activity detection
  • Audio quality monitoring
  • Call analytics and metrics collection
  • Real-time audio visualization and level meters
  • Recording call audio to files

Implementation steps

To implement the audio receiver feature, follow these steps.

1-to-1 call

Implement an audio receiver

Create a class that inherits from ICallAudioReceiver to receive audio data from 1-to-1 calls.

#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
}
};

Set the audio receiver

Register the receiver with the PlanetKitCall instance to start receiving audio data.

// 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

Clear the audio receiver

Unregister the receiver to stop receiving audio data.

m_pCall->DeregisterMyAudioReceiver(pMyAudioReceiver);
m_pCall->DeregisterPeerAudioReceiver(pPeerAudioReceiver);

Group call

Implement an audio receiver

Create a class that inherits from IConferenceAudioReceiver to receive audio data from group calls.

#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
}
};

Set the audio receiver

Register the receiver with the PlanetKitConference instance to start receiving audio data.

// 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

Clear the audio receiver

Unregister the receiver to stop receiving audio data.

m_pConference->DeregisterMyAudioReceiver(pMyAudioReceiver);
m_pConference->DeregisterPeersAudioReceiver(pPeerAudioReceiver);

The APIs related to the audio receiver feature are as follows.

1-to-1 call

Group call