Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WebRTC:如何计算RTC对等连接的用户带宽/网络延迟_Javascript_Jquery_Webrtc_Bandwidth_Getusermedia - Fatal编程技术网

Javascript WebRTC:如何计算RTC对等连接的用户带宽/网络延迟

Javascript WebRTC:如何计算RTC对等连接的用户带宽/网络延迟,javascript,jquery,webrtc,bandwidth,getusermedia,Javascript,Jquery,Webrtc,Bandwidth,Getusermedia,因此,我正在开发一个应用程序,它利用WebRTC在同级之间提供视频/音频通信 我想向用户提供一些关于网络连接/带宽/延迟等方面的反馈,以便在带宽等糟糕的情况下提出可能的解决方案 WebRTC有一个API,它提供了许多关键信息。当对等连接处于活动状态时,getStats()为我提供以下对象 { "googLibjingleSession_5531731670954573009":{ "id":"googLibjingleSession_5531731670954573009

因此,我正在开发一个应用程序,它利用WebRTC在同级之间提供视频/音频通信

我想向用户提供一些关于网络连接/带宽/延迟等方面的反馈,以便在带宽等糟糕的情况下提出可能的解决方案

WebRTC有一个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"
    }
}
我希望通过这些信息来计算用户

a) 带宽(理想情况下音频和视频分开,但直接增加带宽就足够了)

b) 网络延迟

先谢谢你

NB:我已经看到了,但我希望自己能够真正做到这一点(当然需要您的一点帮助:d),因为此包装的示例代码使用了一个“bytesSent”属性,而我似乎没有从
getStats()
中得到它


我也知道GitHub上有可用的RTCStatreport,但同样,我应该能够在不依赖第三方“插件”等的情况下实现我想要的功能。

据我记忆所及,这些RTCStatreport的属性变化很大。例如,您提到的
bytesSent
属性并不总是可用,您可能需要执行以下操作:

// chrome
if (res.googCodecName == 'VP8' && res.bytesSent) {
  // res.bytesSent - bytes sent so far (video)
}

// firefox
if (res.mediaType == 'video' && res.bytesSent) ...

请查看源代码以了解更多信息。您还可以查看一下(如果包装器不再工作,这是我上次查看时的情况)。

Chrome不符合规范。请参阅。这至少对Firefox是不正确的。看见