draft-alvestrand-rmcat-remb-03
接收方带宽估计的RTCP消息 REMB_fanyamin的博客-CSDN博客
webrtc中的码率控制_webrtc设置码率_linux_vae的博客-CSDN博客
参考:
Walter: WebRTC 拥塞控制之 REMB - 接收方带宽估计 - 简书
WebRTC基于TransportCC和Trendline Filter的发送端码率估计(Sendside-BWE)_算法
RTCP message for Receiver Estimated Maximum Bitrate
This feedback message is used to notify a sender of multiple media streams over the same RTP session of the total estimated available bit rate on the path to the receiving side of this RTP session.
接收端最大接收码率估测,接收端会估计本地接收的最大带宽能力,并通过rtcp remb 消息返回给对端,这样对端可以调整自己的发送端码率,达到动态调整带宽得目的.
实现:
1.RTP包增加一个扩展头 abs_send_time
abs_send_time 是一个以秒为单位的时间戳,总共 3 个字节(24 bit) , 格式为 6.18 (小数位固定为18位), 每 64s 会溢出环绕,分辨率为 3.8us
两个包发送的间隔 [T(i) - T(i-1)] 和接收的间隔 t(i) - t(i-1)]在理想情况下是相同的,实际上会有不同. 这样能够通过一些计算模型来计算网络的抖动和delay。
RTP sequence number 计算丢包
再结合接收端的接收的bitrate,来评估出接收的带宽。
2.增加REMB RTCP消息
The message is an RTCP message with payload type 206. And Feedback message type (FMT) is 15.
PT(8 bits):206, 表示这是一个RTCP Feedback message, 值为PSFB(206), 即荷载特定的反馈 Payload-specific Feedback
FMT (5 bits): Feedback message的类型,值15,意为应用层反馈 Application layer feedback
Length (16 bits): 以32比特为单位的总长度减一,包括头和 padding
Maximum Bitrate估计值 = mantissa * 2^exp
为什么要有 REMB?
发送者不知道接收方的带宽情况,它需要有一个机制由接收方告诉它有多少带宽可供传输, 这样发送方可以根据这个估计的带宽来调整分辨率(90p, 180p, 360p, 720p等)和帧率(每秒24, 30, 40, 60帧等)