- 博客(17)
- 收藏
- 关注
原创 webrtc周期性发送RTPFB反馈包
本文基于m79版本的webrtc代码走读,其他版本代码可能有所不同,但是原理没有太大变化。接收端接收到远端的音视频数据包后,会周期的发送RTPFB反馈包记录接收时间和发送时间,用于发送端基于延时的码率估计,周期时间一般为100ms。socket接受到数据包并解析包后,通过带宽预测模块记录接收的包信息,周期发送rtpfb模块构造自上一次发送rtpfb包到本次构造rtpfb包之间的时间段内的包信息。一、RTPFB包的结构 rtpfb包的结构如下所示: 0 1
2021-12-08 17:01:26 1156 2
原创 NetEQ音频DSP处理命令决策
NetEQ音频DSP处理命令有:Normal(正常播放),加速播放(Accelerate),减速播放(Preemptive),Expand(丢包补偿PLC),merge(融合)
2021-11-19 15:20:16 2004 1
原创 webRTC音频NetEq之音频包插入缓冲抖动BUFF处理过程
从远端接收的音频帧,经过解头部RTP后,会首先插入到抖动buff,然后统计延迟信息,绘制延迟直方图,根据直方图计算抖动延时的参数,后续dsp的处理根据这个参数以及其他参数,来决策何种策略处理音频数据。这部分根据webrtc源码详细讲解如何插入抖动buff以及统计延迟直方图。 在webrtc中,NetEQ...
2021-11-15 15:43:25 3205 1
原创 RTP扩展头
现有的RTP数据包头格式可能支持大多数应用程序类所需的公共函数集的完整集,但是还需要满足其他一些需求,有些特定的场合,RTP固定包头的字段内容无法满足,这就需要额外附加信息表征特性,从而RTP定义了扩展头,位于固定头最后。在RFC3550中定义的扩展头格式如下: 头扩展包含一个16位的defined by profile字段和16位长度的字段表征扩展头长度,此处的长度是扩展头32位的个数,比如,扩展头长度是8字节,则length=2。但这个扩展头方法最多存在两个缺陷:首先,在每个rtp包中最多
2021-10-13 15:07:19 2168
转载 傅里叶变换最通俗易懂解释
作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 其实学习本来就不是易事,我写这篇文章的初衷也是希望大家学习起来更加轻松,充满乐...
2021-08-11 17:29:56 590
原创 webrtc服务器mediasoup源码分析
一、webrtc服务器meidasoup框架介绍二、webrtc客户端与mediasoup服务器连接过程(服务器接收流媒体数据之前的工作)三、mediasoup服务器接收流媒体数据及接收拥塞控制四、mediasoup服务器转发流媒体数据及发送拥塞控制五、mediasoup服务器接收RTCP消息处理六、mediasoup服务器同时作为流媒体数据的接收端和发送端发送RTCP消息...
2021-07-09 17:43:09 514 3
原创 STUN协议详解
基于RFC3489标准的stun协议,无法穿越TCP类型NAT,只是适用于在现有NAT类型下的UDP穿越,另一种特殊情况NAT也无法进行穿越,就是对称型NAT,在很多企业中就很多属于对称型NAT,后面会讲到。STUN的发现过程是基于UDP的NAT处理的假设;随着新的NAT设备的部署,这些假设可能会被证明是无效的,当STUN被用来获取一个地址来与位于其在同一NAT后面的对等体通信时,它就不起作用了。当stun服务器的部署不在公共共享地址域范围内时,stun就不起作用。1. 定义STUN客户端:产生
2021-07-05 21:29:00 10472 2
原创 深入研究webrtc平滑发送(paced sender)
webrtc处理音视频的共同过程大致为:采集数据-数据编码-rtp打包-平滑发送-通道socket发送。本文讨论平滑发送(paced sender)作用:如果音视频数据编码后立即发送到网络,那么短时间内网络上会有大量的数据,从而会导致网络拥塞,严重的话...
2021-06-21 16:07:21 2302
原创 如何在webrtc中切换音频输出设备
webrtc中音频模块由虚拟基类AudioDeviceModule 管理,在调用webrtc::CreatePeerConnectionFactory创建peerconnectionFactory实例时会传入音频模块管理指针,如下peer_connection_factory_ = webrtc::CreatePeerConnectionFactory( networkThread.release() /* network_thread */, workerThread.release() /* w
2021-06-07 18:09:07 2869 8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人