webrtc音频引擎总结

    该篇文章将基于voice_engine模块对webrt音频做个总结,但是不包括网络传输部分的细节介绍。关于webrtc的网络模块,将会在接下来的时间以单独的网络模块介绍与大家分享。

   voice_engine 引擎模块的代码结构

webrtc音频引擎总结_第1张图片webrtc音频引擎总结_第2张图片webrtc音频引擎总结_第3张图片


include文件夹下的所有.h文件,都是在调用webrtc音频引擎的时候必须包含的头文件。其中现在的版本没有voe_file.h头文件,我的这个版本本来没有,早期的版本是有该头文件滴,我加这个是为了解决新版的语音录音存储,因为公司要保持录音文件。


该模块除include下还有很多的文件,不能一一介绍,有一定知识基础的可以自行研究,下面我只介绍下学习浏览这些源码的方法。

 

      voice_engine模块主要是一个集成模块,把音频处理相关的业务、网络传输、编解码、采集播放、已经前面几篇介绍的工程集成到一个模块,这样我们在使用的时候就不用自己去组装这些模块,直接调用voice_engine就可以实现音频通话。

      我们知道在语音通话中有源和源的受体,源需要产生声音,源要通过介质传输到受体,然后受体才能听到声音,所谓的webrtc引擎实际上解决的就是该问题。

     1,源的产生,也是前面介绍的audio_device模块,由该模块从源采集数据,从而产生的数字音频源;

     2,源的处理-采集,由于直接采集的源数据,可能参杂着一些杂质,比如噪音,我们就需要对源数据进行处理,那么相应的就有audio_processing等相关模块对采集的数据进行处理; 然后进行数据的压缩,为传输做准备。

     3,源的传输,网络的传输基本都是基于UPD或者TCP进行数据传输,webrtc采用的是基于UDP的RTP传输协议和RTCP传输控制协议进行传输;

     4,源的处理-播放,由于收到的数据都是经过压缩的音频数据,所以我们就需要进行解压处理。如果涉及到多路音频,我们可能还需要进行混音播放处理;也是通过audio_processing等相关模块进行处理;

     5,源的播放,该模块也是使用audio_device进行处理播放。

   基本根据上面的5步能完成整个音频数据的交互。两个人进行音频会话,每个人完成一次1~5的步骤就可以进行一次时事通话了。

  
   这里重点提一下多人会话的情况:

    webrtc在进行多人音频或者视频会话的时候,都会进行写重复的操作。同时与多少个人进行会话就会编码压缩多少次,也会重复传输相同的数据多少次。  也就是1~5步骤的2和3操作存在冗余的情况。这样操作会消耗更多的CPU、内存以及带宽资源。(这个地方回家再具体给大家补上,现在上班了,没有相关软件画图指明,因为版权原因公司不能随便安装没有购买版权的软件)


      



你可能感兴趣的:(多媒体,webrtc,音视频编解码)