微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在接收器端准确测量视频流吞吐量?

如何解决如何在接收器端准确测量视频流吞吐量?

我用 Python 开发了一个视频流 server-->client 应用程序。 我一直在尝试通过以下方式测量接收方(客户端)的 throughput (kb/s)

throughput = [frames's received bytes/s] / [frames receiving time/s]

然而,这种方法有时会为 2X3X 分配带宽(使用 tcnetem 工具),特别是对于像移动网络中的那些经验丰富的可变带宽!。特别是当带宽从一个值变为另一个值时,测得的吞吐量会增加一倍或三倍!!

我试过的代码

    frtpPacket,datasize = self.rcvrSock.receiveFRTPpacket()
    frame_start_ts = time.time()
    while prev_frame_no == frtpPacket.frame_no:
        byteReceived = byteReceived + datasize
        # measure packet receiving time
        packet_delay_start =  time.time()
        frtpPacket,datasize = self.rcvrSock.receiveFRTPpacket()
        packetdelay = time.time() - packet_delay_start #in seconds

    accFrame_delay = accFrame_delay + time.time() - frame_start_ts - packetdelay
    if time.time() - start > 1:
        start = time.time()
        byteReceived_in_bits = (byteReceived/accFrame_delay) * 8 # convert to bps
        byteReceived = 0
        accFrame_delay = 0

其中 rcvrSock 是在类构造函数中初始化的套接字,用于接收帧的数据包。基本上,累积帧延迟和接收的字节,然后每 1 秒计算一次吞吐量 (frames bytes/frames time)

您是否有更好的方法来应对可变带宽?

有任何参考或建议吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。