Rate this page:

How to manage video quality

Different conference members have different hardware and internet connection resources, and this is the main reason people face bad video performance in video conferences.

If we send high-quality video streams to users with poor internet connection or hardware, it causes image and sound to freeze and cause bad performance.

But if we send low-quality video to everyone, users with poor internet connection or hardware do not experience issues, but people with good internet connection and hardware will not be satisfied with the image quality.

That is why we need video quality management.

Sender-side optimization

For web cameras, we manage video quality by changing video resolution. The higher user's resolution, the more video layers the user sends. Then, we send good-quality video to everyone who can receive it and low-quality video to users with a poor internet connection or slow hardware.

For screen sharing, this approach is wrong, because users can share small text and even source code, and lowering resolution can cause the text to be pixelated and unreadable. That is why for screen sharing we manage video quality by lowering frames per second.

Recipient-side optimization

In addition to sender-side optimization, recipients also lower incoming traffic via:

  • requesting a video stream that is not bigger than a video window on the device
  • disabling the incoming video streams for those participants that are not currently visible

Web SDK API

Here you can find instructions on Web SDK, which are useful for building a web application.

Here is how you can connect to a conference with quality management, enable/disable video stream, and request its status:

Connect to a conference with quality management

Connect to a conference with quality management

Enable/disable incoming video

Enable/disable incoming video

You can request a custom resolution from a server and retrieve the last requested resolution:

Request a custom resolution

Request a custom resolution

Here is how you can subscribe to the following events:

  • a user starts/stops talking
  • a user's video stream enables/disables
Subscribe to events

Subscribe to events

VoxEngine scenario

Here you can find instructions on VoxEngine scenario to enable video quality management on Voximplant side.

Here is how you add and remove a user (or endpoint) to and from a conversation:

Add and remove an endpoint

Add and remove an endpoint

You can get connected endpoints list, get an endpoint by its ID, and get the endpoint's call, conference, mode, streams and their directions:

Manage endpoints and their data

Manage endpoints and their data

You can manage streams: enable or disable them, or requests all streams with specific directions:

Manage streams

Manage streams

You can request a specific resolution and limit maximum bitrate for a stream:

Request a specific resolution

Request a specific resolution

Set maximum bitrate for an endpoint

Set maximum bitrate for an endpoint

You can also process the following events:

  • an endpoint is added/removed
  • an endpoint's incoming stream is added/removed/changed
  • an endpoint's outbound stream is added/removed/changed/enabled/disabled
  • an endpoint's outbound stream's max resolution is changed
Subscribe to events

Subscribe to events