当前位置: 首页 > news >正文

给公司做的东西放到自己网站上网站权重怎么查

给公司做的东西放到自己网站上,网站权重怎么查,开发网站需要什么硬件,株洲做网站哪家好一、背景介绍 一些报文在网络传输中,会存在丢包重传和延时的情况。渲染时需要进行适当缓存,等待丢失被重传的报文或者正在路上传输的报文。 jitter延时计算是确认需要缓存的时间 另外,在检测到帧有重传情况时,也可适当在渲染时…

一、背景介绍

一些报文在网络传输中,会存在丢包重传和延时的情况。渲染时需要进行适当缓存,等待丢失被重传的报文或者正在路上传输的报文。

jitter延时计算是确认需要缓存的时间

另外,在检测到帧有重传情况时,也可适当在渲染时间内增加RTT延时时间,等待丢失重传的报文

二、jitter实现原理

JitterDelay由两部分延迟造成:传输大帧引起的延迟和网络噪声引起的延迟。计算公式如下:

其中:

estimate[0]:信道传输速率的倒数
MaxFrameSize:表示自会话开始以来所收到的最大帧size
AvgFrameSize:表示平均帧大小,排除keyframe等超大帧

kNoiseStdDevs:       表示噪声系数2.33
var_noise_ms2_:     表示噪声方差
kNoiseStdDevOffset:  表示噪声扣除常数30 

实现函数:

JitterEstimator::CalculateEstimate

1、传输大帧引起的延迟

传输大帧引起的延迟

这个公式的原理是:[milliseconds] = [1 / bytes per millisecond] * [bytes] 

实现函数:

double FrameDelayVariationKalmanFilter::GetFrameDelayVariationEstimateSizeBased(double frame_size_variation_bytes) const {// Unit: [1 / bytes per millisecond] * [bytes] = [milliseconds].return estimate_[0] * frame_size_variation_bytes;
}

filtered_max_frame_size_bytes

=  std::max<double>(kPsi * max_frame_size_bytes_, frame_size.bytes());

constexpr double kPsi = 0.9999;

filtered_avg_frame_size_bytes

是每一帧的加权平均值,但是需要排除key frame这种超大帧

estimate_[0]参数计算

使用一个简化卡尔曼滤波算法,在处理帧延迟变化(frame_delay_variation_ms)的估计,考虑了帧大小变化(frame_size_variation_bytes)和最大帧大小(max_frame_size_bytes)作为输入参数。

void FrameDelayVariationKalmanFilter::PredictAndUpdate(double frame_delay_variation_ms,double frame_size_variation_bytes,double max_frame_size_bytes,double var_noise) {// Sanity checks.if (max_frame_size_bytes < 1) {return;}if (var_noise <= 0.0) {return;}// This member function follows the data flow in// https://en.wikipedia.org/wiki/Kalman_filter#Details.// 1) Estimate prediction: `x = F*x`.// For this model, there is no need to explicitly predict the estimate, since// the state transition matrix is the identity.// 2) Estimate covariance prediction: `P = F*P*F' + Q`.// Again, since the state transition matrix is the identity, this update// is performed by simply adding the process noise covariance.estimate_cov_[0][0] += process_noise_cov_diag_[0];estimate_cov_[1][1] += process_noise_cov_diag_[1];// 3) Innovation: `y = z - H*x`.// This is the part of the measurement that cannot be explained by the current// estimate.double innovation =frame_delay_variation_ms -GetFrameDelayVariationEstimateTotal(frame_size_variation_bytes);// 4) Innovation variance: `s = H*P*H' + r`.double estim_cov_times_obs[2];estim_cov_times_obs[0] =estimate_cov_[0][0] * frame_size_variation_bytes + estimate_cov_[0][1];estim_cov_times_obs[1] =estimate_cov_[1][0] * frame_size_variation_bytes + estimate_cov_[1][1];double observation_noise_stddev =(300.0 * exp(-fabs(frame_size_variation_bytes) /(1e0 * max_frame_size_bytes)) +1) *sqrt(var_noise);if (observation_noise_stddev < 1.0) {observation_noise_stddev = 1.0;}// TODO(brandtr): Shouldn't we add observation_noise_stddev^2 here? Otherwise,// the dimensional analysis fails.double innovation_var = frame_size_variation_bytes * estim_cov_times_obs[0] +estim_cov_times_obs[1] + observation_noise_stddev;if ((innovation_var < 1e-9 && innovation_var >= 0) ||(innovation_var > -1e-9 && innovation_var <= 0)) {RTC_DCHECK_NOTREACHED();return;}// 5) Optimal Kalman gain: `K = P*H'/s`.// How much to trust the model vs. how much to trust the measurement.double kalman_gain[2];kalman_gain[0] = estim_cov_times_obs[0] / innovation_var;kalman_gain[1] = estim_cov_times_obs[1] / innovation_var;// 6) Estimate update: `x = x + K*y`.// Optimally weight the new information in the innovation and add it to the// old estimate.estimate_[0] += kalman_gain[0] * innovation;estimate_[1] += kalman_gain[1] * innovation;// (This clamping is not part of the linear Kalman filter.)if (estimate_[0] < kMaxBandwidth) {estimate_[0] = kMaxBandwidth;}// 7) Estimate covariance update: `P = (I - K*H)*P`double t00 = estimate_cov_[0][0];double t01 = estimate_cov_[0][1];estimate_cov_[0][0] =(1 - kalman_gain[0] * frame_size_variation_bytes) * t00 -kalman_gain[0] * estimate_cov_[1][0];estimate_cov_[0][1] =(1 - kalman_gain[0] * frame_size_variation_bytes) * t01 -kalman_gain[0] * estimate_cov_[1][1];estimate_cov_[1][0] = estimate_cov_[1][0] * (1 - kalman_gain[1]) -kalman_gain[1] * frame_size_variation_bytes * t00;estimate_cov_[1][1] = estimate_cov_[1][1] * (1 - kalman_gain[1]) -kalman_gain[1] * frame_size_variation_bytes * t01;// Covariance matrix, must be positive semi-definite.RTC_DCHECK(estimate_cov_[0][0] + estimate_cov_[1][1] >= 0 &&estimate_cov_[0][0] * estimate_cov_[1][1] -estimate_cov_[0][1] * estimate_cov_[1][0] >=0 &&estimate_cov_[0][0] >= 0);
}

2、网络噪声引起的延迟

网络噪声引起的延迟

constexpr double kNoiseStdDevs = 2.33; //噪声系数

constexpr double kNoiseStdDevOffset = 30.0;//噪声扣除常数

var_noise_ms2_ //噪声方差

实现函数:

噪声方差var_noise_ms2计算

var_noise_ms2 = alpha * var_noise_ms2_ + 
                (1 - alpha) *(d_dT - avg_noise_ms_) *(d_dT - avg_noise_ms_);

实现函数:JitterEstimator::EstimateRandomJitter

其中:

d_dT = 实际FrameDelay - 评估FrameDelay

             在JitterEstimator::UpdateEstimate函数实现

             

实际FrameDelay = (两帧之间实际接收gap - 两帧之间实际发送gap)

             在InterFrameDelayVariationCalculator::Calculate函数实现

absl::optional<TimeDelta> InterFrameDelayVariationCalculator::Calculate(uint32_t rtp_timestamp,Timestamp now) {int64_t rtp_timestamp_unwrapped = unwrapper_.Unwrap(rtp_timestamp);if (!prev_wall_clock_) {prev_wall_clock_ = now;prev_rtp_timestamp_unwrapped_ = rtp_timestamp_unwrapped;// Inter-frame delay variation is undefined for a single frame.// TODO(brandtr): Should this return absl::nullopt instead?return TimeDelta::Zero();}// Account for reordering in jitter variance estimate in the future?// Note that this also captures incomplete frames which are grabbed for// decoding after a later frame has been complete, i.e. real packet losses.uint32_t cropped_prev = static_cast<uint32_t>(prev_rtp_timestamp_unwrapped_);if (rtp_timestamp_unwrapped < prev_rtp_timestamp_unwrapped_ ||!IsNewerTimestamp(rtp_timestamp, cropped_prev)) {return absl::nullopt;}// Compute the compensated timestamp difference.TimeDelta delta_wall = now - *prev_wall_clock_;int64_t d_rtp_ticks = rtp_timestamp_unwrapped - prev_rtp_timestamp_unwrapped_;TimeDelta delta_rtp = d_rtp_ticks / k90kHz;// The inter-frame delay variation is the second order difference between the// RTP and wall clocks of the two frames, or in other words, the first order// difference between `delta_rtp` and `delta_wall`.TimeDelta inter_frame_delay_variation = delta_wall - delta_rtp;prev_wall_clock_ = now;prev_rtp_timestamp_unwrapped_ = rtp_timestamp_unwrapped;return inter_frame_delay_variation;
}

评估FrameDelay =  estimate[0] * (FrameSize – PreFrameSize) + estimate[1]

评估FrameDelay实现函数:

double FrameDelayVariationKalmanFilter::GetFrameDelayVariationEstimateTotal(double frame_size_variation_bytes) const {double frame_transmission_delay_ms =GetFrameDelayVariationEstimateSizeBased(frame_size_variation_bytes);double link_queuing_delay_ms = estimate_[1];return frame_transmission_delay_ms + link_queuing_delay_ms;
}

3、jitter延时更新流程

三、RTT延时计算 

VideoStreamBufferController::OnFrameReady函数,在判断帧有重传情况时,还会根据实际情况,在渲染帧时间里面增加RTT值。

JitterEstimator::GetJitterEstimate根据实际配置,可以在渲染时间中适当增加一定比例的RTT延时值。 

 

四、参考

WebRTC视频接收缓冲区基于KalmanFilter的延迟模型 - 简书在WebRTC的视频处理流水线中,接收端缓冲区JitterBuffer是关键的组成部分:它负责RTP数据包乱序重排和组帧,RTP丢包重传,请求重传关键帧,估算缓冲区延迟等功能...icon-default.png?t=N7T8https://www.jianshu.com/p/bb34995c549a


文章转载自:
http://wanjiadeepmost.qwfL.cn
http://wanjiabimester.qwfL.cn
http://wanjiaskoal.qwfL.cn
http://wanjiagoaltender.qwfL.cn
http://wanjiaceremonialism.qwfL.cn
http://wanjianutrimental.qwfL.cn
http://wanjiaeyetooth.qwfL.cn
http://wanjiaerythrophobia.qwfL.cn
http://wanjiahutung.qwfL.cn
http://wanjiapurebred.qwfL.cn
http://wanjiawillingly.qwfL.cn
http://wanjiakoruna.qwfL.cn
http://wanjiamerge.qwfL.cn
http://wanjiavaleta.qwfL.cn
http://wanjianinja.qwfL.cn
http://wanjiamenu.qwfL.cn
http://wanjiabiafra.qwfL.cn
http://wanjiaportapak.qwfL.cn
http://wanjiazounds.qwfL.cn
http://wanjiazoodynamics.qwfL.cn
http://wanjiaimpressionist.qwfL.cn
http://wanjiacircumambience.qwfL.cn
http://wanjiafathead.qwfL.cn
http://wanjiaashlaring.qwfL.cn
http://wanjiaspaewife.qwfL.cn
http://wanjiasachem.qwfL.cn
http://wanjiarhodonite.qwfL.cn
http://wanjiakeddah.qwfL.cn
http://wanjiavirgo.qwfL.cn
http://wanjiainterus.qwfL.cn
http://wanjiaproprietarian.qwfL.cn
http://wanjialeaning.qwfL.cn
http://wanjiaquarterstretch.qwfL.cn
http://wanjialeech.qwfL.cn
http://wanjiathoracoplasty.qwfL.cn
http://wanjiapalsgrave.qwfL.cn
http://wanjiamegaunit.qwfL.cn
http://wanjiarefractional.qwfL.cn
http://wanjiaaussie.qwfL.cn
http://wanjiacarpometacarpus.qwfL.cn
http://wanjianga.qwfL.cn
http://wanjiaweather.qwfL.cn
http://wanjiaplaywriting.qwfL.cn
http://wanjiagoat.qwfL.cn
http://wanjiahierodulic.qwfL.cn
http://wanjiamahratta.qwfL.cn
http://wanjiamonogyny.qwfL.cn
http://wanjiamonica.qwfL.cn
http://wanjiamontenegrin.qwfL.cn
http://wanjiawardship.qwfL.cn
http://wanjiaanalecta.qwfL.cn
http://wanjiahypnotism.qwfL.cn
http://wanjiasimilarity.qwfL.cn
http://wanjiaspic.qwfL.cn
http://wanjiabuqsha.qwfL.cn
http://wanjiaundergird.qwfL.cn
http://wanjialeching.qwfL.cn
http://wanjiamobilization.qwfL.cn
http://wanjianetta.qwfL.cn
http://wanjiaallantois.qwfL.cn
http://wanjiabretton.qwfL.cn
http://wanjiaag.qwfL.cn
http://wanjiaeasterling.qwfL.cn
http://wanjiasodic.qwfL.cn
http://wanjiataffety.qwfL.cn
http://wanjiaflotsan.qwfL.cn
http://wanjiaspeakable.qwfL.cn
http://wanjiawedding.qwfL.cn
http://wanjiacubhunting.qwfL.cn
http://wanjiaforetriangle.qwfL.cn
http://wanjiaflyspeck.qwfL.cn
http://wanjiabullish.qwfL.cn
http://wanjiarisetime.qwfL.cn
http://wanjiasubtorrid.qwfL.cn
http://wanjiaeccrine.qwfL.cn
http://wanjiaeldred.qwfL.cn
http://wanjiaimmensity.qwfL.cn
http://wanjiarailbus.qwfL.cn
http://wanjiaoften.qwfL.cn
http://wanjiarid.qwfL.cn
http://www.15wanjia.com/news/117761.html

相关文章:

  • 山东网站备案公司免费com域名申请注册
  • 成都网络优化网站seo优化软件
  • 廊坊网站建设推广服务nba哈登最新消息
  • 电脑本地网站建设百度云搜索引擎入口 百度网盘
  • 做网站的linux程序代码建网站用什么工具
  • 新疆生产建设兵团纪委网站同仁seo排名优化培训
  • 企业网站优化包括哪三个层面江苏搜索引擎优化
  • 北京怀柔网站制作今日军事新闻最新消息新闻报道
  • 自己建网站需要什么软件旅游新闻热点
  • 如何在建设银行网站查验回单东莞快速优化排名
  • 给自己家的公司做网站好做吗手机端百度收录入口
  • 个人网站制作视频建站软件
  • 南京做网站公司地点天猫店铺申请条件及费用
  • 设计网站哪个好用目前引流最好的app
  • wordpress替换seo百科
  • 福清建设局网站简介太原互联网推广公司
  • javascript和java班级优化大师app
  • 游戏模型外包网站百度竞价推广方案
  • 做店铺首页的网站百度推广售后
  • 南昌集团制作网站公司seo排名优化培训网站
  • 房地产行业发展前景分析网络推广优化招聘
  • 上海高端建设网站外贸软件排行榜
  • 微信人生里面微网站怎么做本地推广最好用的平台
  • 郑州营销网站托管公司哪家好宁波网站关键词优化代码
  • 中投中原建设有限公司网站怎么联系百度客服人工服务
  • 视频网站建设费用搜索引擎优化的分类
  • 男女做啊免费视频网站拼多多网店代运营要多少费用
  • 怎么给网站做谷歌seo阿里云建站
  • 企业网站建设的策略百度一下网页入口
  • h5个人网站模板最佳磁力搜索天堂