OpenVidu 2.16.0: Network Quality API, S3 recording and much more
Network quality API (OpenVidu Pro)
One of the most important elements in real-time WebRTC connections is the network. It can have a huge impact in the quality of the media streams being transmitted. Usually we have control over the quality of the server-side network, but we don’t have any guarantee about the network of the clients. For that reason, it is especially important to monitor and to be able to warn about network problems to our end users.
This is why OpenVidu Pro now offers the Network Quality API. Now you can listen for network quality change events in your application’s client. Use it to display a network indicator to inform your users about the quality of their connections, as well as those of other users. This can help reduce customer frustration to a great extent when having a bad experience, as they have a reasonable explanation about their own and others’ network conditions.
S3 recording storage (OpenVidu Pro)
OpenVidu Pro can be configured to upload recordings to an Amazon Web Services S3 bucket instead of storing them in local storage.
This brings multiple advantages:
- You can terminate clusters without worrying losing your recordings, as long as they are properly uploaded to the bucket.
- Launching an OpenVidu Pro cluster configured to use an already populated S3 bucket will make the existing recordings accessible and manageable from the new cluster.
- You can upload to the same S3 bucket from different OpenVidu Pro clusters.
Take a look to the official documentation: Uploading recordings to S3
Improved REST API for managing participant roles
Token API has been replaced with Connection API. This helps harmonizing and unifying the server entities of OpenVidu, as you can see in the renovated REST API documentation. This change also brings many new functionalities
- Now you can invalidate non-used tokens. With the new REST API, you can delete a Connection object before it has been taken by a final user.
- In OpenVidu Pro you can also modify the properties of an existing Connection object. This means that you can change on the fly the role of a participant (from SUBSCRIBER to PUBLISHER, for example) and you can also manage fine-grained INDIVIDUAL recording (see next point).
- Now OpenVidu Java Client and OpenVidu Node Client can also be used to publish IP cameras.
Manual allocation of sessions in your Media Nodes (OpenVidu Pro)
For some particular use cases, the automatic session distribution algorithm based on CPU load of Media Nodes may not be enough. Now you can force the specific Media Node where a session must be allocated. This gives you much more control. Check it out here.
Selecting streams to be recorded (OpenVidu Pro)
Let’s assume the following scenario: your application offers webinar-type video meetings, where a main speaker addresses an audience that can intervene from time to time. And you are recording these sessions. So far, any video stream published into the session would be recorded, so you couldn’t specify to record only the main speaker. Now in OpenVidu Pro you can choose which specific participants must be recorded. See how here. Not only that, with this new feature you can also start and stop the recording of one stream as many times as you want, for the very same session recording process! In our example, the main speaker could be the only participant recorded, and also only at certain specific times.
Health check (OpenVidu Pro)
OpenVidu Pro offers a new health check REST API endpoint. Check it out in the documentation:
New monitoring dashboards (OpenVidu Pro)
We have substantially improved the collection of information from OpenVidu Pro clusters, and there are available new Kibana dashboards to help you monitor and analyse your deployments:
Support for external Elastic stacks (OpenVidu Pro)
Now you can tell OpenVidu Pro to send all of the monitoring information to your own Elasticsearch service. This is in fact the recommended option for a production OpenVidu Pro deployment. If you combine it with S3 recording (in case your product uses the recording feature), you can turn your cluster on and off at will, without worrying about data persistence. See how here: Configuring an external stack.
Kibana security integration (OpenVidu Pro)
We have improved the Kibana access, which is now secured with the Elastic user management system. This is the most natural and logical way of dealing with Kibana users, of course. Learn how to add new users to your Elastic stack here: Create a fine-grained user.
Automatic deletion of Elastic documents (OpenVidu Pro)
Some users have reported unexpected failures and strange behaviors in OpenVidu Pro clusters that eventually turned out to be caused by nearly full hard drives. OpenVidu Pro clusters are constantly generating data, and after some weeks disks can be filled up to dangerous points. Now by default any data older than 15 days will be automatically cleaned up, so these problems never arise. You can of course change this property in your
.env configuration file to any number of days to accommodate it to your specific use case (
OPENVIDU_PRO_ELASTICSEARCH_MAX_DAYS_DELETE=15). And this is also compatible with the new external Elastic stack option!
New configuration parameter for IP cameras
IP cameras can now be further configured with parameter
networkCache. This allows changing the default buffer size that will be used when receiving from remote RTSP streams. The default 2000 ms can be to restrictive for certain use cases, and latency can be greatly improved if the conditions allow it. Check this new parameter here.
Change environment variables of Media Nodes (OpenVidu Pro)
Now you can update any environment variable of your Media Nodes directly from the
.envconfiguration file of your OpenVidu Server Pro Node. This configuration will be broadcasted to all Media Nodes on startup. For example, changing the log level of Kurento in your Media Nodes is now as easy as this.
OpenVidu iOS native application
OpenVidu has offered support for mobile platforms for a long time. First we focused on the most popular cross-platform frameworks, first with Ionic and then with React Native. Finally in Android we implemented a sample tutorial to be used as a template for your own custom Android app. Now we are happy to introduce the same concept for iOS: openvidu-ios. These are the features of this application:
- Latest iOS versions (tested with iOS 14.0)
- Implementing OpenVidu RPC protocol
- Mute / Unmute video
- Mute / Unmute audio
- Toggle speaker / headset
- Subscribe / unsubscribe stream
OpenVidu Call improvements
Our flagship OpenVidu application keeps getting better. Here is the list of all improvements in 2.16.0:
- OpenVidu call app has been updated to Angular 10.
- Joining sessions with no input devices is now possible. Besides, if the video device is already in use, it will be disabled and the user will be able to connect to the session only by using the microphone.
- Muted participants are now present. Users with video muted disappeared from the layout making it difficult to know who is in the room. Now they will show with small black video.
- Automatic chat scroll when new messages are received.
- Video icons have been replaced by a unique icon which it will show an action menu.
- The chat notification did not appear in fullscreen mode. This is fixed now.
- Removed jQuery with the aim of decreasing the bundle size (200KBs). The awesome animation layout is now a simple plain CSS effect.
- Some capture avatar bugs have been fixed.
- If you are using the WebComponent you can hide the footer with a new field of
New documented tutorials
Take a look to the documentation of our new tutorials:
- openvidu-iframe: learn how to embed an OpenVidu web app inside another application using iframe technology.
- openvidu-ipcameras: do you want to publish an IP camera into an OpenVidu session? Then check out this tutorial.
Kurento 6.15.0 release
OpenVidu 2.16.0 uses under the hood the brand new Kurento 6.15.0. This version of the media server brings lots of new features, improvements and bug and security fixes. You can read all of them in Kurento Release Notes.
- Bundled size cut almost in half! From 626 KB to 361 KB (488)
- Fixed iPad Pro and Ionic devices support bug.
- Fixed possible NullPointer exception when fetching Session information when IP cameras are present.
- Updated internal react-native-webrtc to version 1.84.0.
- Crash initializing an only audio publisher, fixed now.
- Setting recording names with slashes and other special characters could result in unexpected errors. Now recording names must be alphanumeric strings or an error is returned.
- Fixed rare exception when starting and stopping multiple recordings for the same session in a row.
- Fixed exception when stopping COMPOSED_QUICK_START recordings in heavy loaded systems.
started, that sometimes could be fired too soon, breaking the following rule of documentation: This means the associated video(s) already exists and its size is greater than 0. This is now fixed.
- IP Cameras with user info IPs (those IPs with Basic Auth formatted in the URL as rtsp://user:email@example.com) where being assigned an ID including the credentials. This is now fixed.
OpenVidu Server CE
- OpenVidu Secret property (
OPENVIDU_SECRET) could introduce critical failures in COMPOSED recording and in the internal RedisDB for TURN server if special characters were being used (such as
/, …). Now
OPENVIDU_SECRETmust comply with an alphanumeric format (plus characters
_) that easily prevents these failures.
- Some TURN connections were not being successfully established under some restrictive network conditions in CE deployments. Now they do.
OpenVidu Server Pro
- Some threads were not being properly closed on programmatic restart, causing duplicated calls in certain processes such as session garbage collector. This is now fixed.
Consider the following points when upgrading to OpenVidu 2.16.0:
- If your OPENVIDU_SECRET has any kind of special character: you must change it to a simple alphanumeric string (plus characters
_). This helps preventing some important bugs caused by secrets with special chars not working fine in some internal services.
- If you are publishing IP cameras: now in REST API method
POST /api/sessions/<SESSION_ID>/connection, the default value of body request property
typehas changed from
WEBRTC. If you were publishing an IP camera and not providing “type” property, now you must explicitly do so, with value “IPCAM”.
- For OpenVidu Pro, the Elastic stack credential parameters have been renamed from
ELASTICSEARCH_PASSWORD. You must transfer the values from the old
.envconfiguration file to the new one, from the old parameters to the new ones. This is also noted in the official upgrading instructions.
- If you are using REST API to control openvidu-server (no Java or Node clients): REST API paths have been updated to unify all of them under the same parent path. Now every OpenVidu REST API operation will be located under path
/openvidu/. For example, what before was:
POST /api/sessions/<SESSION_ID>/connectionnow is
POST /openvidu/api/sessions/<SESSION_ID>/connection. This is very good news: now OpenVidu has a single entrypoint from a single base path, greatly simplifying the configuration of API Gateways. New REST API is well documented in here.
Old API is considered now deprecated, but of course is still supported. When you are ready, you can make sure your migration has been done right by adding this property to your OpenVidu Server:
If that property is set to false (by default is true), old API will no longer by accepted by OpenVidu Server, so you can test everything still works smoothly after updating your app to use the new REST API.