“奇怪的”WebRTC audio/video 丢包率

2023-10-20 23:20
文章标签 奇怪 audio video webrtc 包率

本文主要是介绍“奇怪的”WebRTC audio/video 丢包率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前一段时间在给公司产品的弱网提示功能提供数据支撑的时候,是根据WebRTC抛来上的StatsReport中的packetsLost、packetsSent/packetsReceived作为计算的数据来源进行的。采用的丢包率算法是:

(单位时间内packetsLost差)÷(单位时间内packetsSent/packetsReceived差)= 单位时间内的丢包率

期初,我们采取的单位时间是1秒。即每1秒就计算一次丢包率。但从实际的数据上来看,会发生这样的现象:

上图是通过WebRTC的StatsReport报上来的原始数据,每1秒打印一条,我过滤了其他,只保留了audio。从数据中我们很容易发现一个问题,就是每秒的packetsSent差都是50,但是packetsLost的值会发生275 -> 446 (差值171) 这种巨大的变化。

所以,如果我们按照单位时间1秒来计算丢包率,就会得到这样的结果:

(446-275) ÷ (4590-4540) = 171 ÷ 50 = 3.42 = 342%

显然如果我们按照单位时间1秒来计算丢包率是不合适的,否则就会出现上面展示的现象,上一秒的丢包率还是0,下一秒的丢包率就成了342%。

所以,我目前的处理方法是修改丢包率的计算公式,丢包率不再采用固定单位时间更新,而是根据丢包数发生变化的时候来计算。即当packetsLost发生变化时,记录当前packetsSent/packetsReceived数值,直到下一次packetsLost发生变化时,记录新的packetsSent/packetsReceived数值,丢包率的计算公式不变(还是本文一开始的),两次packetsLost差值作为分子,两次packetsSent/packetsReceived差值作为分母。得到最终的丢包率。这里的主要变化是不再考虑时间,即丢包率数值的更新不以某个固定时间来计算,而完全按照packetsLost发生变化才计算。

经过上面的调整以后,还是借用图中的数值。当packetsLost首次=275时,packetsSent=4240。之后过了7秒,packetsLost变为446,packetsSent变为4590,那么新的丢包率就是:

(446-275) ÷ (4590-4240) = 171÷350=0.4886=48.86%

这样处理后的丢包率数值看起来“更可信”一点。

欢迎读者提供WebRTC的audio/video更好的丢包率计算方法~

 

这篇关于“奇怪的”WebRTC audio/video 丢包率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/250359

相关文章

雷动WEBRTC产品

http://www.rtcpower.com/html/leidongwebrtc.html ; 1.前言      WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得一项技术。WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以

Apple quietly slips WebRTC audio, video into Safari's WebKit spec

转自:http://www.zdnet.com/article/apple-quietly-slips-webrtc-audio-video-into-safaris-webkit-spec/?from=timeline&isappinstalled=0 http://www.zdnet.com/article/apple-quietly-slips-webrtc-audio-video-

LLM系列 | 38:解读阿里开源语音多模态模型Qwen2-Audio

引言 模型概述 模型架构 训练方法 性能评估 实战演示 总结 引言 金山挂月窥禅径,沙鸟听经恋法门。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖铁观音的小男孩,今天这篇小作文主要是介绍阿里巴巴的语音多模态大模型Qwen2-Audio。近日,阿里巴巴Qwen团队发布了最新的大规模音频-语言模型Qwen2-Audio及其技术报告。该模型在音频理解和多模态交互

WebRTC-nack机制详解

1.NACK的含义 丢包重传(NACK)是抵抗网络错误的重要手段。NACK在接收端检测到数据丢包后,发送NACK报文到发送端;发送端根据NACK报文中的序列号,在发送缓冲区找到对应的数据包,重新发送到接收端。NACK需要发送端,发送缓冲区的支持。 WebRTC中支持音频和视频的NACK重传。我们这里只分析nack机制,不分析jitterbuffer或者neteq的更多实现。 2.WebRTC

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

Usb Audio Device Descriptor(10) Hid Device

对于 Standard Interface Descriptor, 当 bInterfaceClass=0x03时,即为HID设备。Standard Interface Descriptor如下 struct usb_standard_interface_descriptor{U8 bLength; /*Size of this descriptor in bytes*/U8 bDescrip

Android rk3399 UAC(USB Audio)开发笔记

一、UAC有1.0和2.0,因Windows对2.0支持不好,我使用的是UAC1.0驱动 内核配置:CONFIG_USB_CONFIGFS_F_UAC1          ---这个宏配置无需物理codec,使用虚拟 alsa codec  驱动路径:"kernel\drivers\usb\gadget\function\f_uac1.c" 内核配置:CONFIG_USB_CONFIGFS_

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探

HumanNeRF:Free-viewpoint Rendering of Moving People from Monocular Video 翻译

HumanNeRF:单目视频中运动人物的自由视点绘制 引言。我们介绍了一种自由视点渲染方法- HumanNeRF -它适用于一个给定的单眼视频ofa人类执行复杂的身体运动,例如,从YouTube的视频。我们的方法可以在任何帧暂停视频,并从任意新的摄像机视点或甚至针对该特定帧和身体姿势的完整360度摄像机路径渲染主体。这项任务特别具有挑战性,因为它需要合成身体的照片级真实感细节,如从输入视频中可能

Learning Temporal Regularity in Video Sequences——视频序列的时间规则性学习

Learning Temporal Regularity in Video Sequences CVPR2016 无监督视频异常事件检测早期工作 摘要 由于对“有意义”的定义不明确以及场景混乱,因此在较长的视频序列中感知有意义的活动是一个具有挑战性的问题。我们通过在非常有限的监督下使用多种来源学习常规运动模式的生成模型(称为规律性)来解决此问题。体来说,我们提出了两种基于自动编码器的方法,以