【问题标题】:What is the current bandwidth or quality of an audio MediaStream in a browser? (WebRTC)浏览器中音频 MediaStream 的当前带宽或质量是多少? (WebRTC)
【发布时间】:2018-01-22 10:56:57
【问题描述】:

我目前正在构建一个 WebRTC 应用程序,并希望收集一些统计数据以评估我的解决方案。我感兴趣的一个指标是接收到的音频(和视频)流的当前带宽。我能够在chrome://webrtc-internals/ (OPUS) 找到当前使用的编解码器,但我无法找到有关当前流质量/带宽的数字(例如 128kbit/s)。

我已经在 RTCPeerConnection 对象中搜索过此类数字,但没有找到。 XXX.RTCconnection.getRemoteStreams()[0].getAudioTracks()[0].getConstraints() 只返回

{ 
  deviceId: {}, 
  echoCancellation: {}, 
  facingMode: {}, 
  frameRate: {}, 
  height: {}, 
  mediaSource: "camera", 
  mozAutoGainControl: {}, 
  mozNoiseSuppression: {}, 
  viewportHeight: {}, 
  viewportOffsetX: {}, 
  ...
}

仅包含有关视频流的信息(有趣的是我请求了音频流)并且没有带宽详细信息。上面示例中的数组没有其他流。 您知道我需要在哪里查找 MediaStream 的当前质量/带宽吗?

【问题讨论】:

    标签: javascript browser webrtc opus mediastream


    【解决方案1】:

    您需要使用 RTCPeerConnection.getStats() API,搜索bytesReceived,然后将比特率计算为两次调用之间接收到的字节数的差。 This 展示了一个完整的例子。

    【讨论】:

    • 非常感谢!我认为它更明显,但解决方案足够公平。
    【解决方案2】:

    如果将SDP设置为stereo并增加maxaveragebitrate

    let answer = await peer.conn.createAnswer(offerOptions);
    answer.sdp = answer.sdp.replace('useinbandfec=1', 'useinbandfec=1; stereo=1; maxaveragebitrate=510000');
    await peer.conn.setLocalDescription(answer);
    

    然后,我得到立体声的潜在最大比特率为 520kb/s,即每通道 260kps。实际比特率取决于您的网络速度和信号强度:)

    【讨论】:

      猜你喜欢
      • 2013-04-20
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 1970-01-01
      相关资源
      最近更新 更多