【问题标题】:webrtc configuration to reduce sent trafficwebrtc 配置以减少发送的流量
【发布时间】:2020-04-17 03:55:52
【问题描述】:

我正在使用webrtc技术开发音视频通话功能。当其中一名参与者处于不稳定的网络(移动网络)中时,我遇到了这种情况。在这种情况下,参与者的音频和视频开始冻结,有延迟等。我认为要解决这个问题,需要对应用程序进行配置,使其发送更少的流量。

请告诉我存在哪些 webrtc 配置来减少发送的流量?

【问题讨论】:

  • 是移动应用还是浏览器?您是否使用某些库来建立 WebRTC 连接?您使用媒体服务器还是 p2p?
  • 嗨,它是多平台应用程序(android、ios、electron)。我没有使用一些库,只是使用本机 WebRTC。我使用 Janus 网关和 TURN 服务器,通过 tls 为每个呼叫中​​继流量

标签: configuration webrtc


【解决方案1】:

最繁忙的流量将是视频。其中一种解决方案是限制视频质量或完全禁用它。您可以使用此代码限制视频质量:

const displayMediaStream = await getDisplayMediaStream();
        let supports = navigator.mediaDevices.getSupportedConstraints();

        if (!supports["width"] || !supports["height"] || !supports["frameRate"] || !supports["facingMode"]) {
          // We're missing needed properties, so handle that error.
        } else {
          let constraints = {
            width: { min: 640, ideal: 1920, max: 1920 },
            height: { min: 400, ideal: 1080 },
            aspectRatio: 1.777777778,
            frameRate: { max: 30 }
          };

          displayMediaStream.getVideoTracks()[0].applyConstraints(constraints)
        }
        return displayMediaStream.getVideoTracks()[0];

您可以使用这些值。

另外,问题可能出在浏览器编解码器上。例如,FF 在屏幕共享的情况下使用的编解码器可以产生高质量的视频流,这对于静态图片(如共享文档)来说很好,当用户播放动态视频(如 youtube 视频)时,就会出现问题。在这种情况下,FF 通过发送约 7 Gb 的流来使网络过载。同时,谷歌浏览器更智能,可以通过使用更好的编解码器来适应流量。我会用不同的浏览器进行测试,如果问题出在 FF 上,你可以尝试强制 FF 使用更好的编解码器,就像谷歌 Chrome 使用的一样,因为你必须在检测 FF 浏览器时修改 SDP,你可以做到就像这里描述的:How can I change the default Codec used in WebRTC?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2013-04-15
    • 1970-01-01
    • 2020-03-16
    • 2015-07-25
    • 1970-01-01
    • 2013-11-22
    相关资源
    最近更新 更多