webrtc-RateStatistics

本文介绍了一种基于滑动窗口实现码率统计的方法。该方法通过累积采样值并在每个窗口结束时计算平均码率来实现。具体步骤包括创建RateStatistics对象以定义窗口大小和缩放因子,更新采样点并维护数据的有效性,最后获取当前窗口内的平均码率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

计算窗口期的码率, 通过update累加count,然后除以采样的窗口期时间 , (accumulated_count_/window_size_ms) * scale

  1. 创建对象

     //window_size_ms: 统计窗口大小
     //scale : 计算结果,缩放因子
     RateStatistics(int64_t window_size_ms, float scale)
    
  2. 更新采样点

     //输入采样的值:count
     //当前时间点 :now_ms
     void Update(size_t count, int64_t now_ms) {
       //删除过期数据, now_ms -maxwindow_size_ms 前面的点
       // 删除点的同时会相应的减少 accumulated_count_,num_samples_
       if (now_ms < oldest_time_) {    
         return;
       }
       EraseOld(now_ms);
     
       //
       // 保存点的信息到列表中,用于以后删除使用
       .... 
     
       //
       //  累积了多少了
       //
       accumulated_count_ += count;
       ++num_samples_;
     } 
    
  3. 获取计算结果

     rtc::Optional<uint32_t> RateStatistics::Rate(int64_t now_ms) const {
        ...
       //主要操作就是 ,active_window_size:时长
       //
       //   accumulated_count_ /  active_window_size 
       float scale = scale_ / active_window_size;
       return rtc::Optional<uint32_t>(static_cast<uint32_t>(accumulated_count_ * scale + 0.5f));
     }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值