webrtc音频QOS方法汇总
文章平均质量分 82
webrtc音频QOS方法汇总
CrystalShaw
向下扎根,向上结果,只要一步一个脚印的走,所经历的日子都不会白白度过的。
展开
-
webrtc代码走读五(音频neteq代码走读)
std::unique_ptr frame里面挂了解码器的句柄,就是说每个报文都指定了自己的解码器句柄。std::unique_ptr stats_:更新报文之间时间间隔,用于确定jitterbuffer缓存时间。std::unique_ptr nack_:更新收包信息,便于确定需要nack重传的报文。封装输出音频PCM帧数据。原创 2023-06-27 17:21:08 · 279 阅读 · 0 评论 -
webrtc 音频QOS方法(汇总篇)
一、概述音频的QOS可以分:音频前处理3A算法、NetEQ两大类。二、音频前处理3A算法1)AECAEC (Acoustic Echo Cancellation) 回声消除算法IOS和ANDROID系统都使用内置的AEC算法。只有windows使用webrtc的AEC算法。配置过程请参见WebRtcVoiceEngine::Init->WebRtcVoiceEn...原创 2020-02-26 15:12:30 · 4937 阅读 · 2 评论 -
webrtc音频QOS方法一(NetEQ之音频缓存延时BufferLevelFilter计算)
一、整体思路上一篇《NetEQ之音频延时DelayManager计算》介绍了如何计算音频报文的网络延时,给系统需要缓存多长时间的音频数据,提供了数据支撑。webrtc会根据当前系统已经缓存包数和网络延时情况,决定给音频解码器发送播放方式,进行平滑处理。下面来介绍计算系统已经缓存包数的方法。二、实现原理1)计算公式系统已经缓存包数有三块组成:1、RTP数据包缓存;2、音频解码后PCM...原创 2020-03-12 15:22:28 · 2335 阅读 · 0 评论 -
webrtc音频QOS方法一(NetEQ之音频网络延时DelayManager计算)
一、整体思路不像视频一帧数据那么大,音频一帧数据包都比较小,UDP的1500个字节完全可以装满一帧。所以音频在发送端的发送时间间隔是按照固定的打包时长节奏发送的。如上图以30ms打包时长为例,ABCD四个报文的发送时间间隔都是30ms。若没有网络影响,接收端的包间间隔也是30ms,音频播放清晰流畅。1)延时定义:二、实现原理三、参考...原创 2020-03-10 14:12:04 · 4447 阅读 · 6 评论 -
webrtc音频QOS方法二(opus编码器自适应网络参数调整功能)
一、opus函数调用接口二、自适应网络调整参数介绍1、WebRtcOpus_SetBitRate Opus支持码率从6 kbit/s到510 kbit/s的切换功能,以适应这种网络状态。以20ms单帧数据编码为例,下面是各种配置的Opus的比特率最佳点。2、WebRtcOpus_SetPacketLossRate 动态配置丢包率,是为了动态调整opus FEC的冗余度。opus编码器自带inband FEC冗余算法,增强抗丢包能力。大概使用的是...原创 2020-06-24 14:09:53 · 3838 阅读 · 0 评论 -
webrtc音频QOS方法三(回声的产生及抑制)
一、回声的产生无论是实际环境还是语音通话中,回声总是存在的。但是需要满足如下两个条件,我们才能感觉到回声的存在:1、回波通路延时足够长回波通路延时 效果 小于30ms 不易察觉 小于50ms 有感知 大于50ms 影响严重,需要干预 2、回波信号能量足够强也就是说,返回的回波信号必须足够强到,能让用户能够听见。在实时音频会议通话中,产生回声的主要来源有两点:电学回声、声学回声。二、回声的种类及抑制1、电学回声目前大家可能很少听说电学回原创 2020-08-13 09:48:35 · 3813 阅读 · 3 评论 -
webrtc音频QOS方法四(音频接收端NACK流程实现)
一、概述发送端的音视频NACK实现没有差异,可以公用一套rtp_packet_history代码,但是在接收端,音视频NACK实现细节是不一样的。视频接收端NACK实现函数是NackModule2,音频接收端NACK实现函数是NackTracker。音视频NACK实现差异主要有两点:视频NACK满足一定条件会进行IDR帧请求:视频模块会配置nack_list的最大长度为kMaxNackPackets,即本次发送的nack包至多可以对kMaxNackPackets个丢失的包进行重传请求。如果丢原创 2022-03-02 19:43:16 · 926 阅读 · 0 评论 -
webrtc代码走读四(音频数据处理流程汇总)
一、概述二、音频收包到渲染NetEqImpl::InsertPacketInternal函数与NetEqImpl::GetAudioInternal函数之间通过packet_buffer_共享队列传输音频报文数据。在NetEqImpl::InsertPacketInternal函数中入队音频报文、在NetEqImpl::ExtractPackets函数中出队报文。NetEq...原创 2019-07-01 14:11:00 · 3169 阅读 · 0 评论