WebRTC 中的带宽侦测
WebRTC的带宽利用率相当高, 在测试中, 绝大多数时间都可以在可用带宽的95%以上, 而且在高利用率的同时, 还能保持音视频的高质量, 其带宽侦测机制在其中扮演了关键的角色. 有几个关键点:
Pacing Bitrate
Pacing Bitrate 为allocated_bitrate_bps/1000 * kDefaultPaceMultiplier, 这里的kDefaultPaceMultiplier = 2.5
void PacedSender::SetAllocatedSendBitrate(int allocated_bitrate, int padding_bitrate) { CriticalSectionScoped cs(critsect_.get()); min_send_bitrate_kbps_ = allocated_bitrate / 1000; pacing_bitrate_kbps_ = std::max(min_send_bitrate_kbps_, estimated_bitrate_bps_ / 1000) * kDefaultPaceMultiplier; padding_budget_->set_target_rate_kbps(padding_bitrate / 1000); }
发起Probing 的时机
void PacedSender::InsertPacket(RtpPacketSender::Priority priority, uint32_t ssrc, uint16_t sequence_number,