在我们从 webrtc getstats 得到的结果中,inbound-rtp 和 remote-inbound-rtp 有啥区别?

Posted

技术标签:

【中文标题】在我们从 webrtc getstats 得到的结果中,inbound-rtp 和 remote-inbound-rtp 有啥区别?【英文标题】:What is the difference between inbound-rtp & remote-inbound-rtp in the results we get from webrtc getstats?在我们从 webrtc getstats 得到的结果中,inbound-rtp 和 remote-inbound-rtp 有什么区别? 【发布时间】:2020-06-08 10:00:25 【问题描述】:

我一直在尝试找出一种方法来计算以下内容: 带宽、延迟、当前上传和下载速度。 并且对我获得的 INBOUND-RTP、OUTBOUND-RTP 和 REMOTE-INBOUND-RTP 的值感到困惑。

在我的脑海中,我将 inbound-rtp 视为所有传入数据的统计信息的集合。 这显然是错误的,因为该类型的不同统计数据始终保持

当前设置使用 chrome 作为 2 个连接客户端和一个媒体服务器,客户端实例在“localhost”上运行

【问题讨论】:

【参考方案1】:

terminology used on MDN 有点简洁,所以这里改写一下,希望对解决你的问题有帮助!块引用来自 MDN 并在下面澄清。如需更简洁的描述,另请参阅W3C definitions。

出站-rtp

一个 RTCOutboundRtpStreamStats 对象,提供有关从 RTCPeerConnection 发送的出站 RTP 流的统计信息。

此统计报告基于您向同行发送的数据流。这是从出站 RTP 流的角度进行的测量,这就是为什么缺少涉及您的对等方的信息(往返时间、抖动等)的原因,因为这些只能在了解对等方的处理的情况下进行测量你的信息流。

入站-rtp

在 RTCInboundRtpStreamStats 对象中,此 RTCPeerConnection 当前正在使用的入站 RTP 流的统计信息。

与出站 RTP 统计相比,此统计报告包含有关您从对等方接收的入站数据流的数据。请注意,如果您没有任何已连接的对等方,则您对 getStats 的调用根本不包括此报告类型。

远程入站-rtp

包含有关远程端点的入站 RTP 流的统计信息;该流对应于本地端点的出站 RTP 流。使用此 RTCRemoteInboundRtpStreamStats 对象,您可以了解远程对等方接收数据的情况。

此统计报告从远程连接的角度提供有关您的出站 rtp 流的详细信息。也就是说,此统计报告从另一端处理您的流的远程服务器的角度提供了有关您的outbound-rtp 流的分析。

【讨论】:

感谢您的解释@Ben 你能帮我理解我应该考虑哪些统计数据来影响延迟。往返时间是否与网络延迟直接相关? @Harshwardhan 据我了解,是的;我确实有一个来源澄清了 RTT = 延迟,但我现在似乎找不到它。如果我能得到它,我会发布更新! 你有什么发现吗?【参考方案2】:

我是 Mozilla 的 MDN 写作团队的一员,刚刚发生了这件事。我从这次对话中获取了一些信息,并将其应用到关于RTCStatsType 的文章中。还有更多需要改进的地方,但我想感谢你的洞察力!

随时注册 MDN 帐户并更新您看到的任何不准确或不完整的内容!或者你可以file an issue,我们会看看我们能做什么。

【讨论】:

以上是关于在我们从 webrtc getstats 得到的结果中,inbound-rtp 和 remote-inbound-rtp 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 getstat() api webrtc 与 Jmeter 集成

WebRTC Native M96数据统计-- 使用PeerConnection::GetStats获取WebRTC实时统计信息

WebRTC Native M96数据统计-- 使用PeerConnection::GetStats获取WebRTC实时统计信息

Hyperledger Fabric getState 不返回所有数据

Cefsharp 和视频标签 WebRTC

Android无法在通信过程中从相机切换到屏幕共享webrtc