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,
int64_t ca

WebRTC凭借其高效的带宽侦测机制,在高利用率下维持音视频质量。关键点包括Pacing Bitrate的计算,适时发起Probing,创建并管理Probing Cluster,以及在PacedSender中处理数据发送和Probing。通过发送Probing Packet(如RTX或Padding Packet)并利用REMB反馈来评估接收端带宽。
最低0.47元/天 解锁文章
1460

被折叠的 条评论
为什么被折叠?



