Peer video resolution in a group call
In a video group call, applications call requestPeerVideo()
to request a video stream from a specific peer. This page describes how to set a video resolution when requesting a video stream.
Supported call type | Supported SDK version |
---|---|
Group call (conference) | All versions |
Overview
In general, a higher number of video streams leads to more CPU and memory consumption. Also, higher video resolutions require more network bandwidth. Excessive use of CPU, memory, or network bandwidth results in poor call quality for users. In other words, calling requestPeerVideo()
with an inappropriate video resolution can degrade audio quality as well as video quality.
Therefore, determining a reasonable resolution is critical to achieving a better video conferencing. The following are resolution values recommended by WebPlanetKit, but applications should optimize the values for their own requirements.
Recommended resolutions
Recommended resolutions by the number of video streams are as follows:
Recommended resolutions for Web | |
---|---|
Grid-view1 | 1–8: VGA 9+: QVGA |
Focus-view2 | 1 HD and QVGAs |
Screen share3 | All QVGAs |
1 Grid-view is a type of tile view. All windows to be rendered for each stream are the same size.
2 Focus-view has one largest window and the others are the minimum size.
3 Screen share means recommended video resolutions during screen share.
Example
Here is an example of how to use requestPeerVideo()
with a proper video resolution. In this example, let's assume that you decided to display videos in VGA for up to 3 participants and in QVGA for 4-8 participants.
User-01 and User-02 join the group call first with their video on. For the basic join flow of a group call, see Group call flow.
User-03 joins the group call with video on. When User-03 joins, all existing participants are informed of the new participant by the evtPeerListUpdated
event. In addition, the list of participants who enabled video is updated by the evtPeersVideoUpdated
event.
With the events, User-03 recognizes that the group call currently has three participants and three video streams including oneself. By the design of the application, User-03 should request two video streams in VGA resolution, and this happens when User-03 calls requestPeerVideo()
for User-01 and User-02.
Likewise, User-01 and User-2 recognize that User-03 has joined with video on. As shown in the figure above, User-01 and User-02 call requestPeerVideo()
for User-03 to display User-03's video in VGA.
After a while, User-04 joins the group call with video on. User-03 recognizes that the number of participants in the group call has increased, and should trigger the presentation of video in QVGA. Therefore, User-03 calls updatePeerVideo()
for User-01 and User-02 to change the resolution of their video to QVGA. After that, User-03 calls requestPeerVideo()
for User-04 to request video in QVGA.
Related API
APIs related to peer video resolution setting in group calls are as follows.