所以,我正在开发一个应用程序,利用WebRTC在同行之间提供视频/音频通信。
我想向用户提供有关其网络连接/带宽/延迟等方面的反馈,以便在带宽等情况不佳时建议可能的解决方案。
WebRTC有一个getStats()
API,它提供了许多关键信息。当Peer Connection处于活动状态时,getStats()
会给我以下对象...
{
"googLibjingleSession_5531731670954573009":{
"id":"googLibjingleSession_5531731670954573009",
"timestamp":"2016-02-02T11:14:43.467Z",
"type":"googLibjingleSession",
"googInitiator":"true"
},
"googTrack_SCEHhCOl":{
"id":"googTrack_SCEHhCOl",
"timestamp":"2016-02-02T11:14:43.467Z",
"type":"googTrack",
"googTrackId":"SCEHhCOl"
},
"ssrc_360347109_recv":{
"id":"ssrc_360347109_recv",
"timestamp":"2016-02-02T11:14:43.467Z",
"type":"ssrc",
"googDecodingCTN":"757",
"packetsLost":"0",
"googSecondaryDecodedRate":"0",
"googDecodingPLC":"3",
"packetsReceived":"373",
"googExpandRate":"0.00579834",
"googJitterReceived":"0",
"googDecodingCNG":"0",
"ssrc":"360347109",
"googPreferredJitterBufferMs":"20",
"googSpeechExpandRate":"0.00140381",
"googTrackId":"SCEHhCOl",
"transportId":"Channel-audio-1",
"googDecodingPLCCNG":"10",
"googCodecName":"opus",
"googDecodingNormal":"744",
"audioOutputLevel":"6271",
"googAccelerateRate":"0",
"bytesReceived":"21796",
"googCurrentDelayMs":"64",
"googDecodingCTSG":"0",
"googCaptureStartNtpTimeMs":"-1",
"googPreemptiveExpandRate":"0.00292969",
"googJitterBufferMs":"42"
}
}
带着这些信息,我希望能计算出用户的:
a) 带宽(最好分别计算音频和视频,但只计算总带宽也可以)
b) 网络延迟
提前感谢...
注:我已经看过this wrapper,但我真的想自己做到这一点(当然需要你的一点帮助:D),因为这个包装器的示例代码使用了一个“bytesSent”属性,而我从
getStats()
中似乎没有得到。我也知道GitHub上有WebRTC测试,但同样地,我应该能够在不依赖第三方“插件”等的情况下实现我想要的。