WebRTC webrtc

WebRTC 混音分析

2018-03-28  本文已影响129人  云上听风

webrtc网站被和谐, 直接上github查找有没有人fork, 然后找到一个比较新的版本
https://github.com/JumpingYang001/webrtc
https://github.com/ibaoger/webrtc (这个好像每天都更新)

没有下载代码, 直接用手机在网页上查看代码, 虽然不方便,但也找到混音处理代码.
简单写一下大概过程, 详细的在以后有用到时再研究吧。
因为是在手机上看的代码,可能理解有误,等有空再仔细在电脑上深入研究。

混音对象:

media/engie/webrtcvoiceengine.cc
void WebRtcVoiceEngine::Init() {
...
config.audio_mixer = webrtc::AudioMixerImpl::Create();
...
}

混音类:

modules/audio_mixer/audio_mixer_impl.cc
AudioMixerImpl::Mix()

Mix方法调用:

modules/audio_mixer/frame_combiner.cc
FrameCombiner::Combine()

Combine方法:
调用MixToFloatFrame进行合并, MixToFloatFrame只是简单的把数据相加, 然后调用RunApmAgcLimiter或RunApmAgc2Limiter对混音结果进行增益处理, 同时应该可以防止溢出.
调用InterleaveToAudioFrame根据音频声道交织处理混音结果.
最后混音的结果在audio_frame_for_mixing中.

上一篇下一篇

猜你喜欢

热点阅读