美文网首页webrtc
BitrateProber解读

BitrateProber解读

作者: MinorUncle | 来源:发表于2017-11-17 21:00 被阅读172次

    BitrateProber也是PacedSender的属性类,第一眼看到BitrateProber
    这个类名时以为是类似网速探测功能的,其实不然,BitrateProber只是为了维持一段时间和数据量内发送的网速不低于某一比特率,(其实也是探测网速的一个辅助功能,只有发送足量的数据,才好测量当前网速),所以在整个直播生命周期中,该类激活的时间比较短。一般检测到网速突变时会触发。

    重要函数解读:

    int64_t BitrateProber::GetNextProbeTime(const ProbeCluster&

    cluster):根据网速和已经发送的数据量获得,大概算法是(已经发送的数据量/当前码率)+当前时间(代码中只有发送完成后调用,所以只发送完一段数据)。暂时不知道这样的意义,为什么消耗了多长时间就要等待多长时间?(补充,因为rtp发送无法知道是否成功发送,这里只是按照指定的网速一直发送,所以下次发送的时间 = 已发送的大小/码率)

    size_t BitrateProber::RecommendedMinProbeSize() :获取每次发送的大小,与码率有关系,根据码率每次发送2ms的数据

    重要接口解读:

    void BitrateProber::CreateProbeCluster(int bitrate_bps, int64_t now_ms):创建ProbeCluster,实际ProbeCluster表示一次Probe过程,一个BitrateProber可以有多个ProbeCluster,但是只能是创建时间在5s之内的,否则新的会释放旧的。下面的所以网速皆指此初始化的bitrate_bps。也就可以理解每次网速变化大的时候就会重新该过程

    void BitrateProber::OnIncomingPacket(size_t packet_size):触发ProbingState::kActive状态,但是条件是packet_size不能太小,具体大小和当前网速有关系,一般是200B,除非预测网速在100Bk/s以下。

    int BitrateProber::TimeUntilNextProbe(int64_t now_ms):下一次Probe时间,主要用于通知线程下一次循环时间

    相关文章

      网友评论

        本文标题:BitrateProber解读

        本文链接:https://www.haomeiwen.com/subject/uvllmxtx.html