美文网首页
WebRTC 混音流程分析

WebRTC 混音流程分析

作者: 棒棒0_0 | 来源:发表于2018-05-10 10:50 被阅读0次

            混音分为服务端混音和客户端混音两种。服务器端混音是为了节省带宽,客户端混音是因为声卡同一时刻只能播放一路的语音,当你的客户端有多路语音接入时,如果不先进行混音,而是每一路都直接输入到声卡,则会造成声音延时越来越严重。

            每一种编解码标准都有相应的采样频率,在不同的ChannelID之间的语音进行混音的时候,首先需要比较每一路的采样频率,如果采样频率不同,则需要进行重新采样为统一的频率,才能进行正常的混音操作。

            WebRTC中目前只有客户端混音,混音具体实现是在\src\modules\audio_mixer目录中。

            1.创建混音对象

    2.把多路音源添加到audio_source_list_

    3.开始混音调用modules/audio_mixer/audio_mixer_impl.cc AudioMixerImpl::Mix()函数

    4.混音算法在Combine函数

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

    相关文章

      网友评论

          本文标题:WebRTC 混音流程分析

          本文链接:https://www.haomeiwen.com/subject/gaqzrftx.html