原因:由于需要进行基于webrtc的混音模块封装,故在此进行简单调用。
概述:通过将webrtc_module_audio_conference_mixer模块的摘出,编写测试代码实现conference_mixer模块的调用,内部混音流程与之前博客分析一致
调用伪代码如下:通过实现AudioMixerOutputRecevicer和MixerParticipant类,实现数据的填充和接收.
class AudioCallback :public webrtc::AudioMixerOutputReceiver
{
public:
virtual void NewMixedAudio(const int32_t id,
const webrtc::AudioFrame& generalAudioFrame,
const webrtc::AudioFrame** uniqueAudioFrames,
const uint32_t size)
{
printf("callback Len=%d\n",size);
m_audioFrame.CopyFrom(generalAudioFrame);
}
}
class Participant : public webrtc::MixerParticipant
{
public:
virtual int32_t GetAudioFrame(int32_t id,webrtc::AudioFrame* audioFrame)
{
printf("GetAudioFrame id=%d\n",id);
audioFrame->CopyFrom(m_audioFrame);
return 0;
}
virtual int32_t NeededFrequency(int32_t id) const
{
return DEF_SAMPLE_RATE;
}
}
webrtc_module_audio_conference_mixer内部细节介绍参考之前博客。
代码工程:https://github.com/quanwstone/WebRTC
总结:通过模块摘除和简单调用,可以清楚得知内部实现,下一步进行模块封装。