OpenVidu 2.22.0: Virtual Background and OpenVidu Components

5 min readMay 18, 2022


Hello, OpenVidu developers! Our new release is packed with many exciting new features… Let’s check them out!

Virtual Background

Virtual Background allows you to apply a filter to a video stream, such as a blurring effect or a background image. In this way you may cut out the person from the background, giving a more professional look to your video calls. Check out the documentation for further information.

OpenVidu Components

Until now, the possible alternatives to develop a videoconferencing app with OpenVidu were basically two:

  • Developing your app from scratch using openvidu-browser SDK and your favorite frontend framework.
  • Building on the official OpenVidu demos and adapting the interface. This could be difficult for complex demos, and keeping the code updated is always a challenging task.

As the OpenVidu’s main goal is to facilitate the development of videoconferencing applications at the highest level, we have added a third alternative. You have now available OpenVidu Components: a frontend library that provides a powerful, reusable and modern set of videoconferencing components. These components can be adapted, extended and replaced very easily to suit your specific application’s needs.

OpenVidu Call application built with OpenVidu Components

Currently, the components library is only available for Angular applications but our roadmap is to support more frontend technologies.

What can I do with OpenVidu Components?

OpenVidu Components allows you develop professional and complete videoconference applications with essential features like screensharing, chat service, smart layout, participants visualization, audio detection and much more. It also offers offers a straightforward way to change the default colours, shapes and logos of the application, replace the default components with your own components and inject new functionalities. The possibilites are great, while the amount of change required in your code is minimum. We can summarize the advantages of using OpenVidu Components in the following three points:

  • It avoids having to start from scratch and avoids low-level details. You can have the first version of your application up and running in minutes, and easily work on your customizations from there.
  • It offers as much customization as possible. Adapt, extend and replace any component however you want.
  • It keeps your code up to date. Using OpenVidu Components means that your application will be much easier to update after each new OpenVidu release.

How can I start using OpenVidu Components?

We have written detailed documentation and tutorials to help guide developers through OpenVidu Components library. You can check the documentation and start your development right away.

Customization of colours, shapes and logo

OpenVidu Components allows you to customise the UI completely to your liking. You can see the official tutorial explaining this topic right here.

Replacing default components

OpenVidu Components also allows replacing any default component with your own, so you can adapt your app to your needs. You can see the official tutorial explaining this topic right here.

Add custom panels with OpenVidu Components

Adding new features

With OpenVidu Components you can also add new features to the videoconference with ease. We have added a simple toggle hand tutorial to demonstrate it. You can check it out right here.

Fault tolerance improvements

OpenVidu Pro and OpenVidu Enterprise improve their fault tolerance capabilities in this release. There are two new additions worth mentioning:

  • New configuration property OPENVIDU_PRO_CLUSTER_RECONNECTION_TIMEOUT allows you to customize the reconnection timeout in case a Media Node undergoes an unexpected disconnection from the cluster. Before this property, an OpenVidu cluster did not provide any time window for Media Node reconnections (they were simply removed from the cluster, and you would have to manually add them through REST API after their recovery). Now, depending on the deployment environment, the OpenVidu cluster will actually try to recover the connection with the crashed Media Node. This is especially useful in On Premises deployments, where Media Nodes have fixed IPs.
  • New WebHook event nodeRecovered will be triggered after a Media Node is successfully reconnected to the OpenVidu cluster.

Check out Fault Tolerance documentation for further information.

Turn off webcam light when disabling video

Method Publisher.publishVideo has been extended in openvidu-browser library to support the forced release of hardware resources. This allows webcam lights to turn off.

TURN server can now be configured in Media nodes

For OpenVidu Pro and OpenVidu Enterprise clusters, the default TURN server can now be deployed in Media Nodes instead of in the Master Node. This is nothing more than the natural evolution for OpenVidu deployments: TURN is in charge of relaying media streams when necessary, so it makes sense to host the service in Media Nodes. This brings to major advantages:

  • The TURN server becomes a scalable service, as it can now be replicated in multiple Media Nodes.
  • Networking performance improves, as video stream data flows directly between TURN server and media server in the same node. This means no unexpected extra charges due to data transfer between your servers.

Hosting TURN server in Media Nodes is considered an experimental feature, so right now the default location is still the Master Node. To test the new location inside Media Nodes you just need to open port 443 TCP/UDP in your Media Nodes and set configuration property OPENVIDU_PRO_COTURN_IN_MEDIA_NODES to true.

Easier configuration for OpenVidu Enterprise HA

OpenVidu Enterprise HA provides now a very easy way for updating configuration properties. Simply modify your S3 configuration file, and all Master Nodes will automatically restart to apply the new configuration! No need to connect to your machines to manually restart OpenVidu services.

This behavior is enabled by default, using property OPENVIDU_ENTERPRISE_S3_CONFIG_AUTORESTART=true.


  • openvidu-server: a race condition could arise after a Media Node crash if the application performed a great amount of petitions to restore a crashed session. This could cause some unexpected 500 errors that could only be overcome by retrying the request. This is now fixed.
  • openvidu-browser : muting a screen-sharing Publisher (calling Publisher.publishVideo(false)) would generate infinite streamPropertyChanged events with changedProperty "videoDimensions", reason "screenResized" and same oldValue and newValue ({width: 0, height: 0}). This is now fixed.
  • openvidu-browser : Connections with role SUBSCRIBER were logging some errors in the browser’s console when subscribing to a Publisher’s stream. These errors were harmless, but still unpleasant. This is now fixed.
  • openvidu-browser : now method Publisher.publishVideo returns a Promise, so you can subscribe to it to directly know when the video has been really muted.
  • PR

Stay tuned for next iterations! You can follow us on Twitter and a Star in GitHub is always welcome :)