我正在开发使用webrtc技术的音视频通话功能。当其中一个参与者处于不稳定的网络(移动网络)中时,我遇到了这种情况。在这种情况下,参与者的音频和视频开始冻结,出现延迟等。我认为为了解决这个问题,有必要配置应用程序,使其发送的流量更少。
请告诉我有哪些webrtc配置可以减少发送流量?
发布于 2019-12-29 06:09:58
大多数繁忙的流量将是视频。其中一个解决方案是限制视频质量或完全禁用它。您可以使用以下代码限制视频质量:
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使用编解码器来生成高质量的视频流,这在静态图片的情况下是很好的,比如共享文档,当用户使用屏幕共享来广播动态视频时,问题就会出现。在这种情况下,FF通过发送~7 Gb的流来使网络过载。同时,Google Chrome更加智能,可以通过使用更好的编解码器来适应流量。我会用不同的浏览器做测试,如果问题出在FF,你可以尝试强制FF使用更好的编解码器,就像Google Chrome使用的一样,因为当你检测FF浏览器时,你必须修改SDP,你可以像这里描述的那样做:How can I change the default Codec used in WebRTC?
https://stackoverflow.com/questions/59496342
复制相似问题