![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
webrtc笔记
zhenfei2017
这个作者很懒,什么都没留下…
展开
-
webrtc PercentileFilter类
排序数列,并获取指定百分比位置的数值这个类没有限制的数列的最大大小,需要注意不时的Erase,防止数列爆了template< typename T>class PercentileFilter { // percentile: GetPercentileValue函数返回这个位置的值 **PercentileFilter(float percentile);** /...原创 2019-03-20 14:10:10 · 483 阅读 · 0 评论 -
webrtc-PacketRouter
PacketRouter这个比较简单就是数据发送的出口吧组合了一组RtpRtcp模块,进行数据的发送控制AddRtpModule() ;RemoveRtpModule()控制发送rtp 有效包TimeToSendPacket();控制发送rtp pad包,填充垃圾数据,用于达到一定码率TimeToSendPadding();发送rtcp.fb包 tracportC...原创 2019-03-28 17:59:41 · 458 阅读 · 0 评论 -
webrtc-AlrDetector
网络受限探测器,探测最近一段时间的发送码率跟预测的码率关系<%60 开始设置受限标志,开始时间值%60 -%70 保持不变>%70 清除受限标志1.设置预测码率void SetEstimatedBitrate(int bitrate_bps)用于更新统计码率,比较 void OnBytesSent(size_t bytes_sent, int64_t now_m...原创 2019-03-28 18:00:18 · 1016 阅读 · 0 评论 -
webrtc-PacedSender
PacedSender发送节拍器,控制发送的节奏,大概5ms一次,发送比较均匀使用的内部类PacedSender::IntervalBudget根据设置的码率,计算这个时间间隔(IncreaseBudget(delta_time_ms) 最大kWindowMs = 500)可以发送的字节数,随着时间流逝剩余可以发送的字节数也会变得越来越小 (1.)设置码率 voi...原创 2019-03-28 18:20:14 · 729 阅读 · 0 评论 -
webrtc音视频抖动缓冲区伪代码
webrtc jitterbufferrtp包几个时间值: 接收时间 ,发送时间,网络传输时间,网络延迟时间(网络排队)rtp包的接收时间 = sendtime + transferTimertp包的接收时间 = sendtime + transferTime + netdelayTime抖动缓冲区目的就是为了消除网络延迟对音视频的平滑播放造成的影响,如果没有抖动缓冲区,就可能播放的...原创 2019-04-08 11:01:25 · 9817 阅读 · 0 评论 -
webrtc-SendSideBandwidthEstimation
SendSideBandwidthEstimation基于RTCP-RR包的,丢包进行码率估算综合基于延迟的码率,估算出目标码率这个是估算码率的最终输出类一. 基于延迟模块估算码率后调用此函数 ,用于(四.)的计算void UpdateDelayBasedEstimate(int64_t now_ms, uint32_t bitrate_bps);二. 接收端通过 rtcp...原创 2019-03-29 09:47:11 · 1277 阅读 · 2 评论 -
webrtc-BitrateControllerImpl
bitrate_controller_impl1.主要是包装了 SendSideBandwidthEstimation2.适配了rtcp接收模块,把部分的rr,remb包信息输出到 SendSideBandwidthEstimation中3.基于延迟估算的带宽通过 OnDelayBasedBweResult设置进来4.加进去一个保留带宽,SendSideBandwidthEstimatio...原创 2019-03-29 10:04:01 · 566 阅读 · 0 评论 -
ulp-fec,flex-fec mask表解读
1. fec参数定义 struct FecProtectionParams { //fec冗余度 ,(fec_rate/255 * n) n个媒体包生成的fec包数量 int fec_rate; //支持的最大帧数量,当达到这么多数据帧的情况下必须生成一个fec包 ,这个参数可以不用考虑就是一个优化项 int max_fec_frames; //...原创 2019-05-05 12:59:27 · 2782 阅读 · 1 评论 -
webrtc-neteq音频抖动处理
音频包每个的打包间隔一样,假设打包间隔为20ms, 则1s产生50个包 (1000/20 )假设8k采样率,每个包就有160采样点 (80000/ 50 = 160)一. 网络延迟计算方式:计算最近延迟每次从队列中获取数据后,增加采样点计数,bufferQueue.pop(){mSampleNUm += 160;}每次向队列写数据的时候计算延迟,并清空mSampleNUm=0...原创 2019-05-08 11:53:33 · 1026 阅读 · 0 评论 -
ulpfec,flexFec,Pro-MPEG cop3协议对比
webrtc和FFmpeg中几种fec保护机制,几个通用的字段snbase: 保护的rtp包的开始seq.P|X|CC|M| :保护的rtp包第一字节n多个标志 xorpt recovery: 保护的rtp包的payloadtype xor值TS recovery: 保护的rtp包的timestamp xor值length recovery :保护的rtp包长度 xor 1. ULP...原创 2019-05-07 16:53:36 · 1750 阅读 · 0 评论 -
webrtc-RateStatistics
计算窗口期的码率, 通过update累加count,然后除以采样的窗口期时间 , (accumulated_count_/window_size_ms) * scale创建对象 //window_size_ms: 统计窗口大小 //scale : 计算结果,缩放因子 RateStatistics(int64_t window_size_ms, float scale)更新采样点...原创 2019-03-28 10:50:56 · 323 阅读 · 0 评论 -
webrtc-CongestionController
CongestionController网络拥塞控制主模块,综合了基于丢包估算和基于网络延迟估算方式进行的内部成员实例 // rtprtcp模块包装,适配到节拍器中 PacketRouter* const packet_router_; //发送节拍器 const std::unique_ptr<PacedSender> pacer_; //控制估...原创 2019-04-01 18:08:28 · 848 阅读 · 0 评论 -
webrtc-AimdRateControl
AimdRateControl 控制码率如何增减,及其数值根据网络状态,过载,欠载状态 更新内部码率控制状态机 增加码率,减少码率,保持码率根据实际接受码率的变化波动情况,计算码率的如何进行增加,减少,及其改变的量增加码率 : 前提假设码率正常变化符合正态分布,(1.) 如何变化在3西格玛内,进行加性增加(2.) 如何变化在3西格玛内,进行乘性增加减少码率 : 基本上就是当...原创 2019-03-29 18:37:07 · 1061 阅读 · 0 评论 -
webrtc-TrendlineEstimator
webrtc网络排队趋势推测器(TrendlineEstimator),用于推测网络的延迟趋势,延迟值。用于计算直线 y=ax+b创建// window_size: 窗口大小,数据点数组的大小,如果数据过多则删除老的数据// smoothing_coef :平滑输入y的因子 , (使用滑动平滑算法,相当把 1/smoothing_coef 个数据点进行 行平均 )// t...原创 2019-03-26 20:01:09 · 1128 阅读 · 0 评论 -
webrtc-MedianSlopeEstimator
webrtc中网络排队,基于趋势中值算法(MedianSlopeEstimator),用于推测网络的延迟趋势,延迟值。用于计算直线 y=ax+b创建对象// window_size:窗口大小,最多这多点// threshold_gain:MedianSlopeEstimator(size_t window_size, double threshold_gain):median_f...原创 2019-03-27 10:03:11 · 345 阅读 · 0 评论 -
webrtc-OveruseDetector
网络状态探测器,用于探测网络当前状态一. 探测网络状态过载了 网络负荷比较大,需要减少流量正常状态欠载 网络负荷比较小,可以加大流量–// ts_delta:2帧发送的相对延迟// num_of_deltas: 计算offset的点的个数// now_ms:当前时间点BandwidthUsage Detect(double offset,double t...原创 2019-03-27 15:33:18 · 692 阅读 · 0 评论 -
webrtc-InterArrival
为了计算2帧/组数据之间的传输时间延迟(发送端时间戳差,接收端接收时间差),传输字节大小差可能网络设备会把多个包聚合到一起进行发送的问题构造 // timestamp_group_length_ticks:时间戳间隔少于这个值,表示是一组数据 // timestamp_to_ms_coeff: 时间戳到ms的转化系数 // enable_burst_grouping: 是否根据接收时...原创 2019-03-27 18:13:05 · 645 阅读 · 0 评论 -
webrtc-DelayBasedBwe
DelayBasedBwe基于接收端网络延迟,估算出的码率主要用的的成员: //计算帧间间隔 std::unique_ptr<InterArrival> inter_arrival_; //估算延迟的3中方法,卡尔曼滤波,基于斜率最小二乘,基于斜率的中值 std::unique_ptr<OveruseEstimator> kalman_estimator...原创 2019-04-01 10:35:57 · 954 阅读 · 0 评论 -
webrtc-RemoteEstimatorProxy
RemoteEstimatorProxy接收端使用RemoteEstimatorProxy,统计接收的报信息,然后进行feedback包的构建,并且触发发送。 继承于Module,有Process处理循环数据输入部分 void RemoteEstimatorProxy::IncomingPacket(int64_t arrival_time_ms, ...原创 2019-04-01 18:07:07 · 839 阅读 · 1 评论 -
webrtc-RemoteBitrateEstimatorSingleStream
CongestionController::WrappingBitrateEstimatorRemoteBitrateEstimatorSingleStream兼容以前老的基于延迟码率估算方式,接收端使用RemoteBitrateEstimatorSingleStream估算码率的,然后通过REMB反馈给发送端的估算方式,跟发送端估算方式是一致的 这结构体,保存的基于延迟的码率估算的相关结...原创 2019-04-01 18:07:37 · 681 阅读 · 0 评论 -
webrtc-TransportFeedbackAdapter
TransportFeedbackAdapter发送端,用于处理接收端来的rtcp-transportCC信息,用于发送端计算基于延迟的估算码率 TransportFeedbackAdapter(RtcEventLog* event_log, Clock* clock, BitrateContro...原创 2019-04-01 18:08:02 · 976 阅读 · 0 评论 -
sup-panb-unifiedplan
webrtc支持多流方式,分为planb(早期版本), unified plan支持2个视频流。1234,5678planb mid对应值video/audio。,所有的视频流应用一样的设置(在一个m下面)m=videoa=mid:video//多个ssrc区分多个流a=ssrc:1234 msid:xxxa=ssrc:5678 msid:xxxunified plan. mi...原创 2019-09-28 17:22:57 · 646 阅读 · 0 评论