OpenVidu 2.12.0: a new chapter for OpenVidu

7 min readMar 16, 2020

Hello there! It’s been a long time since the last release, and we appreciate the patience of the whole community. We have been working tirelessly on many aspects of the platform to make it better, more versatile and easier to use. Let’s dive into the new features of OpenVidu 2.12.0!

New features in OpenVidu CE

IP cameras support

You can now publish IP cameras into an OpenVidu Session!. You users will be able to receive it as they receive any other regular webcam stream. With this new feature you can for example implement surveillance systems in the blink of an eye. How about receiving your IP camera video in your mobile app? And what about building a web dashboard where you can observe all of your security cameras footage in real-time? So many possibilities…

You can check out IP cameras section of OpenVidu official documentation to learn more

Send signals from your backend

You are now able to send messages to the participants of an OpenVidu Session from your application’s backend with method POST /api/signal. This feature brings the power of client side messaging to your server side.

Record your webapp with COMPOSITE layout

You can now use custom recording layouts deployed outside of OpenVidu Server host. Before it was mandatory to build an HTML/CSS layout and upload it to OpenVidu Server host before you could use it as a custom recording layout. But now you can record any webpage hosted anywhere. More information here.

New CDR/Webhook event filterEventDispatched

You can now register filterEventDispatched events in OpenVidu CDR and OpenVidu Webhook services. This way you can know when a voice or video filter has emitted an event from your application’s server side (once you add an event listener to a filter).

New data in CDR/Webhook event participantJoined and participantLeft

Both participantJoined and participantLeft CDR/Webhook events include now clientData and serverData properties. This allows you to better identify your users from your application’s server side.

Automatic reconnection when connection is lost

Now your clients can listen to brand new reconnection events triggered by Session object: reconnecting and reconnected events. reconnecting event is triggered when a client connected to a Session loses its network connection with OpenVidu. Automatically openvidu-browser tries to reconnect to the Session with an endless polling. Once the client recovers its network connection, openvidu-browser will automatically try to reset the user state in the session. If it is too late and OpenVidu has already evicted the user due to inactivity, then a SessionDisconnectedEvent with reason networkDisconnect will be triggered. If the user reconnected on time, everything’s back to normal, event reconnected will be dispatched by the Session object and media connections will be automatically re-established if necessary (see “Media freeze bug” in below section “Bug Fixes”).

You can check out Automatic reconnection section of OpenVidu official documentation to learn more

Switch from camera to screenshare instantly

You can use new Publisher.replaceTrack() method available in openvidu-browser to change the audio or video tracks of a Publisher object on the fly, without unpublishing and re-publishing again (so, no need of WebRTC renegotiation!). This also helps changing the video track (front camera for back camera, webcam for screenshare…) keeping your audio connection at all times.

You can check out Switch camera section of OpenVidu official documentation to learn more

Change publisherSpeakingEvents configuration on the fly in your clients

New method StreamManager.updatePublisherSpeakingEventsOptions() allows you to dynamically change the threshold for audio events in openvidu-browser. Affected events are publisherStartSpeaking, publisherStopSpeaking and streamAudioVolumeChange. This way you can adjust in real time the limits and frequency of audio stream polling in the browser to make better use of these events.

All the goodnes from Kurento 6.12.0 and 6.13.0 releases

OpenVidu 2.12.0 is now using the latest 6.13.0 version of Kurento. There are lots of improvements in both Kurento 6.12.0 and 6.13.0, including some several critical bug fixes. You can take a look to all of them here:

New features in OpenVidu Pro

New payment method

This is possibly the biggest change for this release. The number of customers of our OpenVidu Pro tier has increased considerably in recent times, and we needed to facilitate the process of subscribing to OpenVidu Pro. We have introduced a new license key system for deploying OpenVidu Pro. Now anyone can create an OpenVidu account, and in just a few clicks you will be able to purchase an OpenVidu Pro license to launch as many OpenVidu Pro clusters as you want.

Visit Pricing section to learn more about the new OpenVidu Pro subscription model. You have a 15-day free trial period when registering as an OpenVidu user!

Simplified pricing

Related to previous point, we have now removed the minimum 10$ per month fee and users receive a 15-day free trial period when they register as OpenVidu users. Check it out now for free!

Dynamic scalability

OpenVidu Pro 2.11.0 allowed you to initialize your OpenVidu Pro cluster with a fixed number of Media Nodes. Now you can add and remove as many Media Nodes as you want on the fly from OpenVidu Inspector or through OpenVidu Pro REST API. Visit Scalability section to learn more.

OpenVidu Inspector big upgrade

OpenVidu Inspector has undergone a major upgrade to support the new clustering features of OpenVidu Pro 2.12.0. You can now manage your cluster directly from OpenVidu Inspector. Besides, it is now built with Angular 9, which makes it even more efficient and less heavy!

Detailed session monitoring improved

OpenVidu Pro is now using the latest Elasticsearch and Kibana version. And every new event and important piece of information generated by 2.12.0 is of course stored and processed for later use. Visit Detailed session monitoring section to learn more.

Bug fixes

  • Media freeze bug: media connections are now automatically re-negotiated under the hood if they remain freezed after a user is successfully reconnected following a network failure. This happens when a user loses its Internet connection and manages to reconnect to OpenVidu before it was automatically evicted from the Session, but its media streams are broken. This is so because media connections flow through their own plane, separated from Client-OpenViduServer signaling plane.
  • openvidu-server: race condition fixed for same final user establishing more than one connection to a session at the same time. This might be related to some sessions getting stuck even when no participants are connected to it.
  • openvidu-server: concurrency problems when closing a session being recorded in COMPOSED video mode (fix for issue 364). Other possible concurrency problems of the same nature have also been addressed, so stability of OpenVidu Server should have improved for these kind of corner cases.
  • openvidu-server: configuration parameter openvidu.recording.public-access could not take effect when set to false. Now it always does.
  • openvidu-browser: LocalRecorder was broken for recent versions of Firefox. Now LocalRecorder.record() method has an optional string parameter to indicate the desired mimeType. If none is provided, then default browser codecs wil be used to record media streams in the browser.
  • openvidu-browser: method OpenVidu.getUserMedia() was broken when requesting screen sharing. Now it works just fine.
  • openvidu-browser: settinga listener for streamAudioVolumeChange event just after initializing a Publisher or Subscriber object could trigger an Exception. Now it doesn’t.
  • openvidu-browser: Session.signal() wrong “to” array now does not trigger a fatal error.
  • openvidu-node-client: OpenVidu entrypoint object would throw an error if initialized with a URL with no port. Now you can use your openvidu-server domain name without a port (default 443) to initialized it.
  • OpenVidu Inspector: thumbnails of recording files were sometimes asking for the secret in order to be loaded. Now they don’t.

And what’s next…

With release 2.12.0 we have laid a powerful foundation on which to continue to grow in a much more agile way. New releases will be coming very soon. Highly anticipated features we’ll be working on from this point are allowing more than one Publisher per client, supporting direct P2P sessions and improving OpenVidu Pro scalability even more.

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