对于rtp,PacedSender是非常重要的一个关节,因为rtp发送不知道数据发送是否成功,但是发送太多肯定容易丢包,所以需要控制发送的速率,只能一波一波发送,PacedSender在一个线程中循环发送,默认5ms发送一波,但是在网速探测的时候是2s发送一波。
主要接口解读
virtual void CreateProbeCluster(int bitrate_bps):开始平稳控制发送速率(流媒体数据不够则增加填充数据)
virtual int64_t AverageQueueTimeMs():未发送队列里每个包平均缓存的时间
int64_t PacedSender::TimeUntilNextProcess():下次处理的时间,用于控制多长时间发送一波
void InsertPacket():添加一个待发送的包
virtual void SetEstimatedBitrate(uint32_t bitrate_bps):设置发送的码率
void SetSendBitrateLimits(int min_send_bitrate_bps,int max_padding_bitrate_bps):设置码率限制
virtual rtc::OptionalGetApplicationLimitedRegionStartTime() const;网速受到应用编码码率不足而低于目标码率的时间