WebRTC内置debug工具怎么用

发布时间:2021-11-15 11:13:57 作者:小新
来源:亿速云 阅读:288

小编给大家分享一下WebRTC内置debug工具怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!



当你想要找到你WebRTC产品中的问题时,webrtc-internals是一个非常棒的工具,因为你需要用它测试WebRTC以及debug,或者你需要对你的配置进行微调。

如何获得webrtc-internals的数据转储(stats dump)?



如果你对这个工具不熟悉的话,那么打开你Chrome浏览器里的WebRTC段,在这段里打开另一个表单并且将其指向这个内部(internal)URL:chrome://webrtc-internals/

WebRTC内置debug工具怎么用

webrtc-internals允许将轨道作为大型的JSON下载下来,这样你就可以一层一层地来看它了,但是当你这么做的时候,你会看到类似这样的东西:

WebRTC内置debug工具怎么用

查看webrtc-internals数据 


人们通常问到的第一件事是—这些数字到底代表什么?一位我们自己的测试人员将这些值放入时序图表里并且将其输出出来。这就给了我们要比直接从webrtc-internals中取出的300×140的图片要大的多的图表。

WebRTC内置debug工具怎么用

在GetUserMedia请求表单中,我们可以看到每次的getUserMedia调用,以及相关约束。不幸的是,我们不能看到结果或者MediaStreams中有的ids。


 

RTCPeerConnection数据 



对于每个peerconnection,我们可以在这里看到这四点:

WebRTC内置debug工具怎么用

下面是RTCStatsReport对象的队列,其中有很多秘钥和数值,可以这样读取:

WebRTC内置debug工具怎么用

要记住的是在这些统计数据和规范之间有一些区别。这里面有一个经验法则,任意一个名称以“Id”结尾的秘钥都包含一个指向不同的报告,其id属性与秘钥的值对应。所以全部这些报告都是彼此相连的。还要注意,这些值都是字符型的,尽管它们看起来像布尔值那样的数字。

RTCStatsReport中最重要的属性是报告的种类,下面是其中的几种:

让我们来深入探讨一下这些报告型



googTrack与googLibjingleSession报告

googTrack和googLibjingleSession没包含什么信息,所以我们跳过它不做分析。

googCertificate报告

googCertificate报告包括了一些有关近端和对等端所使用的DTLS证书的信息,以及指纹和哈希算法。这些都在RTCCertificateStats字典中有详细说明。

googComponent报告

googComponent报告的作用就像是认证数据与连接之间的胶水。它包含了一个纸箱当前活跃的候选项对的指针,以及有关用语DTLS和SRTP加密的加密套接字。

googCandidatePair报告

googCandidatePair对一对ICE候选做了描述,也就是低层次的连接。从这个报告中,你可以得到这些信息:

从下面这张图上可以比较直观地看到一些数据,如发送和接收的字节数等等:

WebRTC内置debug工具怎么用

 

localCandidate和remoteCandidate报告

感谢上天localCandidate和remoteCandidate与规范中所描述的是一模一样的,告诉我们ip地址,端口号,以及候选项的类型。对于TURN候选来说,其会告诉我们候选被分配在哪个端口上了。  

Ssrc报告

ssrc报告是这里面最重要的报告之一。每一个音频或者视频轨道发送或接收都有一个ssrc报告。在旧版本的规范中,这些叫做MediaStreamTrackStats和RTPStreamStats。其内容决定于这是音频还是视频轨道,以及这是发送还是接收。让我们先来描述下一些其中基本的元素:

音频特性

对于音轨来说,我们有audioInputLevel和audioOutputLevel(在规范中叫做audioLevel)可以告诉我们音频信号是来与麦克风,还是通过扬声器播出的。这个特性可以用来探测Chrome里不受欢迎的音频bug。我们还可以通过googJitterReceived和googJitterBufferReceived得知有多少抖动被接收,以及jitter buffer的状态。

视频特性

对于视频轨道来说,我们有两大信息需要关注。第一个是被送入googNacksSent,googPLIsSent和googFirsSent中,NACK,PLI和FIR数据包的数量差别。这可以让我们知道丢包会如何影响视频质量。

更重要的是,我们得知了框架大小和速率是作为输入(googFrameWidthInput,googFrameHeightInput,googFrameRateInput)并且实时上是发送到网络之上(googFrameWidthSent,googFrameHeightSent,googFrameRateSent)。

相似的数据可以在接收端被收集到存在googFrameWidthReceived,googFrameHeightReceived中。对于框架速率来说我们甚至可以将其从googFrameRateReceived,googFrameRateDecoded和GOOGFrameRateOutput中分开来。

在编码端我们可以看到这些值之间的差别,还能知道为什么图片会被缩小。通常这些事情发生不是因为没有足够大的CPU,就是没有足够大的带宽来传送完整的图片。另外,想要降低框架速率(其可以从对比googFrameRateInput和googFrameRateSent之间的差距得到),我们需要得到额外的信息:分辨率是否因为CPU的问题而得到适应,以及是否是因为带宽不够使得googBandwidthLimitedResolution的值是真。无论是上述哪个情况发生了改变,googAdaptionChanges计数器都会增加。

我们可以从这张图表上看到这些变化:

WebRTC内置debug工具怎么用

这里的丢包是人为产生的。作为反应,Chrome在t=184时第一次尝试降低分辨率,这是绿线代表的googFrameWidthSent开始偏离黑线代表的googFrameWidthInput。接下来在t=186时,框架开始下降,输入框架速率(浅蓝色线条所示)大约是30fps,与发出的框架速率(蓝色线条所示)产生区别,后者几乎是0.

另外,Chrome在ssrc报告中公开了大量关于音频和视频堆栈的表现的数据。我们会在未来的博文中进行讨论。

VideoBWE报告

最后,但并不是不重要,我们来分析一下VideoBWE报告。就像它名字所表达的,它包括有关带宽估计的信息。但是还有一些其他的有用信息包含在这个报告里:

正如你看到的,这个报告会给你视频质量最重要的信息—可用带宽。查看发送和接收的可用带宽通常都是在深入分析ssrc报告之前做的最重要的事。因为有时你可能会发现这样的情况,这解释了用户所抱怨的“质量差”:
 

WebRTC内置debug工具怎么用

在这种情况下,“在所有时间里,带宽估计都在下降”是对质量问题的一个比较好的解释。

看完了这篇文章,相信你对“WebRTC内置debug工具怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. 浅谈Webrtc,这些你了解嘛
  2. webrtc build.sh

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

webrtc

上一篇:Linux开发工具和Windows开发工具对比的示例分析

下一篇:AIO与NIO的实际区别是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》