webrtc

mac2024-05-24  34

原因:由于需要进行基于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

 

总结:通过模块摘除和简单调用,可以清楚得知内部实现,下一步进行模块封装。

 

最新回复(0)