An0*_*d3r 5 javascript jquery bandwidth webrtc getusermedia
所以,我正在开发一个利用WebRTC在同行之间提供视频/音频通信的应用程序.
我想向用户提供一些关于他们的网络连接/带宽/延迟等的反馈,以便在带宽等可怕的情况下建议可能的解决方案.
WebRTC有一个getStats()API,它提供了许多关键信息.当对等连接处于活动状态时,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"
}
}
Run Code Online (Sandbox Code Playgroud)
有了这些信息,我希望能够计算出用户......
a)带宽(理想情况下音频和视频分开但直接带宽就足够了)
b)网络延迟
提前致谢...
注意:我已经看过这个包装器,但我希望能够自己做到这一点(当然有一点你的帮助:D)因为这个包装器的示例代码使用了一个"bytesSent"属性,我不知道好像回来了getStats()?
我也知道GitHub上可用的WebRTC测试,但同样,我应该能够实现我想要的而不依赖于第三方"插件"等.
据我所知,这些 RTCStatReport 的属性差异很大。例如,bytesSent您提到的属性并不总是可用,您可能必须这样做:
// chrome
if (res.googCodecName == 'VP8' && res.bytesSent) {
// res.bytesSent - bytes sent so far (video)
}
// firefox
if (res.mediaType == 'video' && res.bytesSent) ...
Run Code Online (Sandbox Code Playgroud)
查看您发布的包装器的源代码以了解更多信息。你也可以看看我的叉子(如果包装不再工作,就是我上次看时的情况)。
| 归档时间: |
|
| 查看次数: |
2438 次 |
| 最近记录: |