WebRTC:使用getStats()

Die*_*ego 6 javascript bandwidth webrtc mediastream

我正在尝试获取webRTC应用程序的统计数据来测量音频/视频流带宽.我检查了这个问题,发现它非常有用; 然而,当我尝试使用它时,我得到了

TypeError: Not enough arguments to RTCPeerConnection.getStats.
Run Code Online (Sandbox Code Playgroud)

我认为这是因为2016年webRTC的内容发生了变化,现在有了mediaStreamTracks; 但是我在没有mediaStreamTracks的情况下构建了项目,我不知道如何更改此功能以使其工作.

你有什么想法?感谢您的支持!

更新:

我的电话是

peer.pc.onaddstream = function(event) {
      peer.remoteVideoEl.setAttribute("id", event.stream.id);
      attachMediaStream(peer.remoteVideoEl, event.stream);
      remoteVideosContainer.appendChild(peer.remoteVideoEl);
      getStats(peer.pc);
};
Run Code Online (Sandbox Code Playgroud)

和getStats()在第n.7章中与此链接相同.

mid*_*ido 6

自从我使用WebRTC之后的某个时候,问题就是,chrome和firefox以不同的方式实现它(相信它们仍然以不同的方式实现)

火狐:

webrtc stats选项卡是 about:webrtc

peerConnection.getStats(null).then(function(stats){...  // returns a promise
Run Code Online (Sandbox Code Playgroud)

铬:

webrtc stats选项卡是 chrome://webrtc-internals/

peerConnection.getStats(function(stats){ // pass a callback function
Run Code Online (Sandbox Code Playgroud)

避免这些跨浏览器问题的一种方法是使用adapter.js

  • 是的Firefox将其实现为[spec](https://w3c.github.io/webrtc-stats),而Chrome则没有.见[this question](https://github.com/webrtc/adapter/issues/5). - 是的,adapter.js有助于调用约定,但请注意,它不会重命名特定于Chrome的统计数据键[尚未](https://github.com/webrtc/adapter/issues/5). (2认同)