webrtc源码学习一

           网上有许多源码学习的文章,自己参考了好多,但是结合下载的源码发现源码的变化真的好快啊,上一年的文章对应的模块或者类都已经找不到了,真的是牛人好多啊,自己还是刚开始学习没多久的,希望看到多多指教啊。

先说一下音频模块吧

 

源码的audio codec模块展开就会看到各种编码文件很明显

ISAC、LIBC、G711、G722、opus等,并提供扩展接口。

 

ISAC(Internet Speech Audio Codec)是一种宽带和超宽带音频编码器,是webrtc音频引擎默认的编解码器。

webrtc源码学习一

LIBC(Internet Low Bitrate Codec)是一种窄带语音编解码器,可以保证低带宽条件下较好的音质,采样频率:8khz;20ms每帧时比特率为15.2kbps;30ms每帧时比特率为13.33kbps

webrtc源码学习一

G.711是一种由国际电信联盟(ITU-T)制定的音频编码方式,又称为ITU-T G.711。它代表了对数PCM(logarithmic pulse-code modulation)抽样标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。它利用一个 64Kbps 未压缩通道传输语音讯号。 起压缩率为1:2, 即把16位数据压缩成8位。G.711是主流的波形声音编解码器。20ms打包,带宽为 ( 528/20 + 64) Kbit/s=90.4 Kbit/s

webrtc源码学习一

Neteq:实现了自适应抖动控制算法以及语音包丢失隐藏算法,用以适应不断变化的网络环境,确保音质优美且缓冲延迟最小。

webrtc源码学习一

 

AEC(Acoustic Echo Cancelling)将回声估计值从话筒的输入信号中减去,从而达到消除回声的目的。

NS(Noise Suppression)探测出背景固定频率的杂音并消除背景噪音。

VAD(Voice Activity Detection)检测到当前为静音,将只编码生成数据量很小的静音包,可大大节省编码时间和带宽。

AGC(Automatic Gain Control)自动调麦克风的收音量,避免声音忽大忽小。

webrtc源码学习一

RTP/RTCP webrtc voice engine采用成熟的RTP协议来传输实时音频数据。

混音:可以在客户端可以在媒体服务器处理