Description
stream.attachVideo
currently takes a required videoQuality
parameter that can be one of 90P/180P/360P/720P/1080P
resolution values. In addition to these options, can we please have an Auto
option where Zoom decides the best resolution to render the video based on network/device capabilities? This shall be similar to ZoomVideoSDKVideoPreferenceMode_Balance
mode of the Android/iOS VideoSDK.
For our custom web-app, where calls are between 2 participants, we are showing a video quality control to render the remote participant video. We provide options for Auto, FHD-1080, HD-720, SD-360
. While, the other three resolutions are straight forward with Web VideoSDK, for Auto
we are implementing a custom solution where we are checking network quality with stream.getNetworkQuality()
every minute and adjusting the video resolution if network quality drops.
Problem starts when stream.getNetworkQuality()
frequently returns downlink: -1
poor quality rating on even good networks, so our Auto
mode decreases video quality to the lowest resolution; whereas if we select FHD-1080
, then zoom is able to consistently render high quality FHD videos even if it still recognises our network quality as -1
So, the request is,
- can we please have an
Auto
option on theVideoQuality
enum? where on passing this value tostream.attachVideo
, Zoom shall adjust the rendered video resolution automatically based on network/device capabilities. - can we improve the
stream.getNetworkQuality()
implementation or make its logic more transparent? as we are consistently seeing good quality networks frequently rated as-1
Which Web Video SDK version?
2.1.10
Video SDK Code Snippets
const getAutoResolution = ({ downlink }: NetworkQuality) => {
// downlink: 4, 5
let resolution = VideoQuality.Video_1080P;
switch (true) {
case downlink === 3:
resolution = VideoQuality.Video_720P;
break;
case downlink === 2 || downlink === 1:
resolution = VideoQuality.Video_360P;
break;
case downlink < 1:
resolution = VideoQuality.Video_180P;
break;
default:
break;
}
return resolution;
};
...
setInterval(() => {
getAutoResolution(stream.getNetworkQuality());
}, 60000); // 1 minute
Device (please complete the following information):
- OS: macOS and Windows
- Browser: All