| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.32.0 | Deploy | |
| On AWS | 2.32.0 | Deploy | ||
| Dev container | 2.32.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.32.0 | Deploy | |
| On AWS | 2.32.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.32.0 | Deploy | |
| On AWS | 2.32.0 | Deploy | ||
| openvidu-browser | NPM package | 2.32.0 | NPM | |
| JS file | 2.32.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.32.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.32.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.32.0 | GitHub | |
| openvidu-angular | NPM package | 2.32.0 | NPM | |
| Kurento Media Server | Ubuntu package | 7.3.0 | Kurento Docs | |
| mediasoup | NPM package | 3.19.12 | NPM |
This is a maintenance release with important updates to internal dependencies and bug fixes. Upgrading OpenVidu applications from 2.31.x to 2.32.x is a straightforward process.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.31.0 | Deploy | |
| On AWS | 2.31.0 | Deploy | ||
| Dev container | 2.31.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.31.0 | Deploy | |
| On AWS | 2.31.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.31.0 | Deploy | |
| On AWS | 2.31.0 | Deploy | ||
| openvidu-browser | NPM package | 2.31.0 | NPM | |
| JS file | 2.31.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.31.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.31.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.31.0 | GitHub | |
| openvidu-angular | NPM package | 2.31.0 | NPM | |
| Kurento Media Server | Ubuntu package | 7.1.1 | Kurento Docs | |
| mediasoup | NPM package | 3.11.26 | NPM |
There has been numerous updates to keep dependencies up to date and without vulnerabilities. This includes:
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.30.0 | Deploy | |
| On AWS | 2.30.0 | Deploy | ||
| Dev container | 2.30.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.30.0 | Deploy | |
| On AWS | 2.30.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.30.0 | Deploy | |
| On AWS | 2.30.0 | Deploy | ||
| openvidu-browser | NPM package | 2.30.0 | NPM | |
| JS file | 2.30.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.30.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.30.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.30.0 | GitHub | |
| openvidu-angular | NPM package | 2.30.0 | NPM | |
| Kurento Media Server | Ubuntu package | 7.0.1 | Kurento Docs | |
| mediasoup | NPM package | 3.11.26 | NPM |
The use of requestAnimationFrame as the callback to update the virtual background frames on video elements was a problem. When the browser tab lost focus, the callback stopped its execution and the video froze. This is now fixed by using directly setTimeout instead.
When muting a video, the thumbnail of OpenVidu Call and OpenVidu Components (consisting of the user initial) was not displayed in Safari iOS due to some problems with CSS styles. This is now fixed.
OpenVidu Components library was fixed to Angular 14. It has now been updated and is possible to use it with up to Angular 17.
There has been numerous updates to keep dependencies up to date and without vulnerabilities. This includes:
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.29.0 | Deploy | |
| On AWS | 2.29.0 | Deploy | ||
| Dev container | 2.29.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.29.0 | Deploy | |
| On AWS | 2.29.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.29.0 | Deploy | |
| On AWS | 2.29.0 | Deploy | ||
| openvidu-browser | NPM package | 2.29.0 | NPM | |
| JS file | 2.29.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.29.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.29.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.29.0 | GitHub | |
| openvidu-angular | NPM package | 2.29.0 | NPM | |
| Kurento Media Server | Ubuntu package | 7.0.1 | Kurento Docs | |
| mediasoup | NPM package | 3.11.26 | NPM |
Now you can share the screen audio when initializaing a screen sharing Publisher. Check it our here.
Including:
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.28.0 | Deploy | |
| On AWS | 2.28.0 | Deploy | ||
| Dev container | 2.28.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.28.0 | Deploy | |
| On AWS | 2.28.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.28.0 | Deploy | |
| On AWS | 2.28.0 | Deploy | ||
| openvidu-browser | NPM package | 2.28.0 | NPM | |
| JS file | 2.28.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.28.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.28.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.28.0 | GitHub | |
| openvidu-angular | NPM package | 2.28.0 | NPM | |
| openvidu-react | NPM package | 2.28.0 | NPM | |
| Kurento Media Server | Ubuntu package | 7.0.1 | Kurento Docs | |
| mediasoup | NPM package | 3.11.26 | NPM |
It is now possible to deploy OpenVidu Enterprise High Availability in your own servers! Since OpenVidu 2.20.0 we have offered the High Availability deployment option for high demanding environments which require full scalability and fault tolerance. But this option was only available as an AWS deployment. Up until now.
This new deployment option has also brought a brand new architectural solution. This has been done in order to simplify the management of the OpenVidu nodes, the decission on how many Master Nodes (for signaling) and Media Nodes (for video/audio streams) you should launch, and to prepare the ground for future native deployments on Kubernetes. OpenVidu Enterprise HA on premises deployments is now based on a single Node, which includes in a single machine all the components that were splitted between two different machines (a Master Node and a Media Node) before.
You can follow the instructions to deploy an OpenVidu Enterprise HA cluster on premises right here.
Including:
onLangChanged) is emitted by VideoconferenceComponent when the application language has changed, so you can act upon a user selecting a different language. See the event here.langOptions) is added to customize the language options available in the application. See here.See all changelogs since previous version (which was 4.5.2) here.
OPENVIDU_WEBRTC_ICE_SERVERS was being overridden by openvidu-java-client when not configuring custom ICE servers, setting an empty array. This made OPENVIDU_WEBRTC_ICE_SERVERS configuration parameter to be ignored. Now this is fixed, and the global parameter will be used if Connection parameter for a custom ICE server is empty.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.27.0 | Deploy | |
| On AWS | 2.27.0 | Deploy | ||
| Dev container | 2.27.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.27.0 | Deploy | |
| On AWS | 2.27.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.27.0 | Deploy | |
| On AWS | 2.27.0 | Deploy | ||
| openvidu-browser | NPM package | 2.27.0 | NPM | |
| JS file | 2.27.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.27.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.27.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.27.0 | GitHub | |
| openvidu-angular | NPM package | 2.27.0 | NPM | |
| openvidu-react | NPM package | 2.27.0 | NPM | |
| Kurento Media Server | Ubuntu package | 7.0.1 | Kurento Docs | |
| mediasoup | NPM package | 3.11.23 | NPM |
The new major version of Kurento has been recently released, and it is now the default version used in OpenVidu. This new version of the media server focuses on upgrading the internal dependencies to recent official versions, compared to the old versions and custom forks used in Kurento 6. This brings improvements in terms of security and stability. You can read the release notes of Kurento 7 here.
We have added a new sample application server in Ruby. If you plan to build your OpenVidu application server in Ruby, you can use it as a starting point. You can find it here: openvidu-basic-ruby.
It is now possible to broadcast an OpenVidu Session as only-audio. Visit Broadcasting to learn how.
Publisher.publishVideo(false, true) before publishing the Publisher to a Session was causing the audio track to not play on the Subscriber side. If the Publisher called the method after publishing to the Session, the audio played correctly. Now audio also plays correctly even in the case the Publisher stopped its video track before publishing to the Session. Related forum discussion: 4514. Related PR: 797onActivitiesPanelForceRecordingUpdate event is emitted when the participants need to update their recording list.onActivitiesPanelForceRecordingUpdate event.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.26.0 | Deploy | |
| On AWS | 2.26.0 | Deploy | ||
| Dev container | 2.26.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.26.0 | Deploy | |
| On AWS | 2.26.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.26.0 | Deploy | |
| On AWS | 2.26.0 | Deploy | ||
| openvidu-browser | NPM package | 2.26.0 | NPM | |
| JS file | 2.26.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.26.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.26.2 | NPM | |
| openvidu-webcomponent | ZIP | 2.26.0 | GitHub | |
| openvidu-angular | NPM package | 2.26.0 | NPM | |
| openvidu-react | NPM package | 2.26.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.18.0 | Kurento Docs | |
| mediasoup | NPM package | 3.10.3 | NPM |
Do you want to stream your OpenVidu Sessions to thousands of users? You can now easily broadcast them to YouTube Live, Twitch or any other live ingestion service that supports RTMP protocol. This feature is seamlessly integrated in OpenVidu REST API, openvidu-java-client SDK and openvidu-node-client SDK. And you can fully customize the broadcasting layout with HTML/JS/CSS.
Check out the official documentation here.
The broadcasting feature is included in the OpenVidu Components library (so currently available in openvidu-angular) and in the OpenVidu Call application
openvidu-java-client SDK offers now more flexibility when configuring its internal HTTP client. Now you may provide a custom HTTP client builder in the constructor of OpenVidu object. This may be interesting for many reasons, including adding custom HTTP headers, adding proxy configuration, modifying the default connection timeouts, setting up a cookie store, and other things. Check out the new constructors in JavaDoc.
openvidu-node-client SDK has a new method for production environments to silent logs of level DEBUG and INFO. Only WARNING and ERROR logs will be written to the output. Check out this new method in TypeDoc.
openvidu-ios sample application is now using the latest WebRTC version available for iOS. Previous version was from 2020, current version is the latest one available (Jan 2023). This brings all the improvements of the WebRTC standard updates to iOS.
recognized in a row. This behavior is not contemplated and is now fixed.OPENVIDU_PRO_ELASTICSEARCH allows launching OpenVidu Pro/Enterprise without an Elasticsearch. Before it was supposed to be possible to launch an OpenVidu Pro/Enterprise without an Elasticsearch by setting configuration property OPENVIDU_PRO_ELASTICSEARCH_HOST to an empty string, but this resulted in failed deployments. Now this is fixed with the new property. Of course, launching your OpenVidu Pro/Enterprise deployment without Elasticsearch will result in a complete absence of observability and history data.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.25.0 | Deploy | |
| On AWS | 2.25.0 | Deploy | ||
| Dev container | 2.25.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.25.0 | Deploy | |
| On AWS | 2.25.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.25.0 | Deploy | |
| On AWS | 2.25.0 | Deploy | ||
| openvidu-browser | NPM package | 2.25.0 | NPM | |
| JS file | 2.25.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.25.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.25.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.25.0 | GitHub | |
| openvidu-angular | NPM package | 2.25.0 | NPM | |
| openvidu-react | NPM package | 2.25.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.18.0 | Kurento Docs | |
| mediasoup | NPM package | 3.10.3 | NPM |
The Speech to Text service introduced in release 2.24.0 has been extended with support for more engines. Now you can use:
Check out Speech to Text documentation to learn more about all of these alternatives.
New configuration property OPENVIDU_PRO_DOCKER_REGISTRIES allows you to configure private Docker registries to be used in your Media Nodes. Your custom images of OpenVidu services can now be private but easily accessible by your nodes at the same time. The actual services that can take advantage of this feature are kurento-media-server (configured with property KMS_IMAGE) and speech-to-text-service (configured with property OPENVIDU_PRO_SPEECH_TO_TEXT_IMAGE).
captionsLangOptions has been addded, which allows overriding the default Speech to Text language options. This allows you configuring your own custom languages in the case you are using Vosk as Speech to Text engine.recordingActivity directive that prevented it from working as expected.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.24.0 | Deploy | |
| On AWS | 2.24.0 | Deploy | ||
| Dev container | 2.24.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.24.0 | Deploy | |
| On AWS | 2.24.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.24.0 | Deploy | |
| On AWS | 2.24.0 | Deploy | ||
| openvidu-browser | NPM package | 2.24.0 | NPM | |
| JS file | 2.24.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.24.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.24.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.24.0 | GitHub | |
| openvidu-angular | NPM package | 2.24.0 | NPM | |
| openvidu-react | NPM package | 2.24.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.18.0 | Kurento Docs | |
| mediasoup | NPM package | 3.10.3 | NPM |
The new Speech to Text service allows transcribing in real time the audio tracks of an OpenVidu Session. It makes very easy to include captions in your video calls, no matter what language your users speak!
This feature, available in OpenVidu Pro and Enterprise editions, is designed to support different transcription engines in the background. For now we have released Speech to Text with Azure support, but others are coming very soon (including a self-hosted open source alternative for no extra cost). You can read the Speech to Text documentation here.
IP cameras API is now compatible with cameras publishing to http and https URIs (these are generally in .mjpeg format). These are without a doubt the most common IP cameras URIs, so this support opens up new possibilities of use.
onNodeCrashed. This allows the application to implement fault tolerance in case of a node crash. See Fault Tolerance.CALL_PRIVATE_ACCESS, CALL_USER, CALL_SECRETonlyPlayWithSubscribers was enabled, there was a bug preventing the camera feed to automatically reactivate once a new Subscriber requested the camera's Stream. Hence, the camera's feed appeared frozen and the only way to fix it was unpublishing and publishing the IP camera again. Now this is fixed.OPENVIDU_PRO_AWS_S3_WITH_PATH_STYLE_ACCESS allows forcing path style requests in the internal S3 client, which gets rid of this problem.Publisher.replaceTrack was triggering a wrong StreamPropertyChanged event, which resulted in a wrong modification of audioActive or videoActive Stream properties. Now new StreamPropertyChangedEvent.changedProperty values have been added: videoTrack and audioTrack. You can use these new values to know when a remote user has called replaceTrack on its Publisher object.ADMIN_SECRET and RECORDING have changed their name to CALL_ADMIN_SECRET and CALL_RECORDING respectively.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.23.0 | Deploy | |
| On AWS | 2.23.0 | Deploy | ||
| Dev container | 2.23.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.23.0 | Deploy | |
| On AWS | 2.23.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.23.0 | Deploy | |
| On AWS | 2.23.0 | Deploy | ||
| openvidu-browser | NPM package | 2.23.0 | NPM | |
| JS file | 2.23.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.23.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.23.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.23.0 | GitHub | |
| openvidu-angular | NPM package | 2.23.0 | NPM | |
| openvidu-react | NPM package | 2.23.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.18.0 | Kurento Docs | |
| mediasoup | NPM package | 3.10.3 | NPM |
We have made a complete revision of our documentation to make it clearer, more precise and easier to use. We have also updated all our tutorials to use a more production-ready approach than before. These are the main improvements of the new documentation:
There is now an introductory section explaining the basic concepts of OpenVidu and how it fits in your application's stack: Developing your video app.
There are now basic application server samples for multiple languages. These applications are minimal functional backends ready to work against OpenVidu. Every tutorial is now prepared to work with any of these application servers. You can take any of them as a starting point of your backend. Check out new section Application Server.
For the Application Client of your OpenVidu app, we have divided the documentation into three different sections, from the most straightforward to the most customizable: Ready-to-use component, OpenVidu Components and Full control of the UI. Everyone of them with their own guided tutorials. And all of them are prepared to work against any of the application servers mentioned in the previous point.
Our flagship application OpenVidu Call continues to improve with the addition of some new useful features:
We have updated the native applications for Android and iOS to support the different TURN configurations offered by OpenVidu. This means unifying the operation of these applications with respect to those using the openvidu-browser.js SDK: now they are able to use the OpenVidu TURN server or an external TURN server. Connecting your users from secure networks will be easier with the new versions of these mobile apps.
OpenVidu Ionic has always been a good option to build your OpenVidu mobile application. And now you can use it also to build native desktop applications for Windows, MacOS and Linux using the same source code. Visit this section of the documentation to learn how.
We have included in the renewed documentation two new sections offering commercial support for RTMP streaming (you can stream OpenVidu sessions to services such as YouTube or Twitch) and SIP integration (add phone calls as participants in an OpenVidu session). Both services are offered as external modules that to be acquired will require contact with OpenVidu team through commercial@openvidu.io.
You can read the official documentation about these new features here:
Publisher.replaceTrack produced an echo effect when replacing the audio track. Now this is fixed with commit 17ff910. Related issues 642 and PR 700.Publisher.replaceTrack with an audio track, that was deactivating events publisherStartSpeaking, publisherStopSpeaking and streamAudioVolumeChange. This is fixed now.recordingStarted event wasn't being fired for new participants of a session, if they joined it after the recording was started. Now the event is always triggered for new users if the session is being recorded.OPENVIDU_DOMAIN_OR_PUBLIC_IP has been finally removed. More than two years ago OpenVidu 2.14.0 deprecated it in favor of DOMAIN_OR_PUBLIC_IP https://docs.openvidu.io/en/2.14.0/reference-docs/openvidu-config/.SUPPORT_DEPRECATED_API is now false by default. It still exists, so you can turn it back to true if necessary. But it is absolutely advisable to migrate to the new API endpoints (introduced in OpenVidu 2.16.0, Nov 2020). See 2.16.0 release notes. An upcoming release will completely remove support for old API endpoints.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.22.0 | Deploy | |
| On AWS | 2.22.0 | Deploy | ||
| Dev container | 2.22.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.22.0 | Deploy | |
| On AWS | 2.22.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.22.0 | Deploy | |
| On AWS | 2.22.0 | Deploy | ||
| openvidu-browser | NPM package | 2.22.0 | NPM | |
| JS file | 2.22.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.22.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.22.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.22.0 | GitHub | |
| openvidu-angular | NPM package | 2.22.0 | NPM | |
| openvidu-react | NPM package | 2.22.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.16.0 | Kurento Docs | |
| mediasoup | NPM package | 3.9.6 | NPM |
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 is a new frontend framework built for making videoconferencing applications for OpenVidu in the simplest possible way. It is an npm library (currently available for Angular) that provides the developer powerful and complete videoconferencing components. These components can be adapted, extended and replaced very easily to suit your application's needs. Visit the documentation page for extended information and guided tutorials.
OpenVidu Pro and OpenVidu Enterprise improve their fault tolerance capabilities. There are two new additions:
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.nodeRecovered will be triggered after a Media Node is successfully reconnected to the OpenVidu cluster.Check out Fault Tolerance documentation for further information.
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.
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:
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.
OpenVidu Enterprise HA provides now a very easy way for updating configuration properties. Simply modify the 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.
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.Publisher.publishVideo returns a Promise, so you can subscribe to it to directly know when the video has been really muted.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.21.0 | Deploy | |
| On AWS | 2.21.0 | Deploy | ||
| Dev container | 2.21.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.21.0 | Deploy | |
| On AWS | 2.21.0 | Deploy | ||
| OpenVidu Enterprise | On Premises | 2.21.0 | Deploy | |
| On AWS | 2.21.0 | Deploy | ||
| openvidu-browser | NPM package | 2.21.0 | NPM | |
| JS file | 2.21.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.21.1 | MVN Repository | |
| openvidu-node-client | NPM package | 2.21.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.21.0 | GitHub | |
| openvidu-angular | NPM package | 2.21.0 | NPM | |
| openvidu-react | NPM package | 2.21.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.16.0 | Kurento Docs | |
| mediasoup | NPM package | 3.9.6 | NPM |
OpenVidu Enterprise edition has gone from beta to production-ready. OpenVidu Enterprise brings the best performance, improved media quality and better scalability for high-demand environments. Any OpenVidu CE or OpenVidu Pro application will be compatible out-of-the-box with it. Take a look at what OpenVidu Enterprise has to offer: Documentation.
The transition from Beta to General Availability means the following limitations in OpenVidu Enterprise are now overcome:
If you want OpenVidu to automatically store your recordings in a separate storage service, now you are not limited to AWS S3. Any S3-compatible provider can be used. See documentation.
You can now publish IP cameras with rtsps protocol. See documentation.
Now it is very easy to configure external TURN servers in the client-side. You can:
OPENVIDU_WEBRTC_ICE_SERVERS.customIceServers when creating a Connection.Before, this was only possible using the client-side library openvidu-browser (with OpenViduAdvancedConfiguration.iceServers property), which always required more work on the developer side and had some limitations.
In some occasions users may be located behind strict firewalls that only allow connections though port 443 (for example, in restricted corporate networks). Now OpenVidu may be configured with external TURN servers to overcome these situations. You can use our brand new TURN server appliance that can be deployed externally, or use a third-party TURN SaaS. See documentation here.
Event objects of openvidu-browser client library are now strictly typed in TypeScript. This has also greatly improved openvidu-browser documentation, centralizing all of the available events in interfaces. Now you have now a complete description of all events in one place:
media_node_id, that is used to identify the Media Node in which the object lived. This is now fixed and the property do actually exist.There is a small breaking change affecting recording IDs. These IDs (and recording default names) are different for consecutive recordings of the same session. Before, they where built with the session ID, plus a hyphen (-) and a number. For example, for three consecutive recordings of session ses_ABCD, the recording IDs would be: ses_ABCD, ses_ABCD-1, ses_ABCD-2. Now the hyphen has been replaced by a tilde (~) due to new restrictions that have arisen. Now the recording IDs would be: ses_ABCD, ses_ABCD~1, ses_ABCD~2. This should not really affect your application, unless you are explicitly assuming the existence of a hyphen in your own logic.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.20.0 | Deploy | |
| On AWS | 2.20.0 | Deploy | ||
| Dev container | 2.20.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.20.0 | Deploy | |
| On AWS | 2.20.0 | Deploy | ||
| openvidu-browser | NPM package | 2.20.0 | NPM | |
| JS file | 2.20.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.20.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.20.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.20.0 | GitHub | |
| openvidu-angular | NPM package | 2.20.0 | NPM | |
| openvidu-react | NPM package | 2.20.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.16.0 | Kurento Docs | |
| mediasoup | NPM package | 3.7.19 | NPM |
OpenVidu Enterprise edition comes with beta support for a High Availability deployment, with replication of all nodes and load balancing for clients. All functionality of OpenVidu Enterprise remains in beta during version 2.20.0 of OpenVidu, so it is still free of charge, just as it was for version 2.19.0.
One of the limitations of using mediasoup with OpenVidu Enterprise is now fixed: INDIVIDUAL recording is already possible when using mediasoup.
The Connection object now has an ip property with the IP of the client, just as OpenVidu Server sees it. This can help further identifying your final users. Of course, this property is also available in the official server SDKs openvidu-java-client and openvidu-node-client.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.19.0 | Deploy | |
| On AWS | 2.19.0 | Deploy | ||
| Dev container | 2.19.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.19.0 | Deploy | |
| On AWS | 2.19.0 | Deploy | ||
| openvidu-browser | NPM package | 2.19.0 | NPM | |
| JS file | 2.19.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.19.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.19.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.19.0 | GitHub | |
| openvidu-angular | NPM package | 2.19.0 | NPM | |
| openvidu-react | NPM package | 2.19.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.16.0 | Kurento Docs | |
| mediasoup | NPM package | 3.7.17 | NPM |
OpenVidu Enterprise edition is available in beta, free of charge for a limited time. It includes mediasoup support as Media Server, which includes a great boost in performance and quality. To test it you need an OpenVidu Pro license. Visit OpenVidu Enterprise documentation to learn how to enable it.
Safari was the only supported browser in iOS until 2.19.0. Now latest versions of Chrome, Firefox, Microsoft Edge and Opera are also supported in iPhones and iPads.
OpenVidu Inspector brings the Timeline View for your sessions. It provides a quick and visual way to review the events and actions that took place in a session, ordered in time. You can also filter by user or event type.
system.status.avgLoad had an invalid JSON value when numNodes was 0.?. Now they will be displayed fine for the following language groups: Western Europe, Eastern/Central Europe, Baltic, Cyrillic, Greek, Turkish, Arabic, Simplified and Traditional Chinese, Hebrew, Japanese, Korean, Thai. Note that special versions of these chars (bold, italic....) could still be problematic to be shown in the recording layout.WebHook/CDR event sessionCreated is triggered earlier in time, and for all sessions. Before, it was only launched after the first user joined the session. Now it is launched after successfully initializing a session through REST API or server SDKs. This also means that sessionDestroyed event wasn't being launched before for sessions that haven't had any user connected to it. Now it is. We consider this to be a more predictable and more consistent behavior.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.18.0 | Deploy | |
| On AWS | 2.18.0 | Deploy | ||
| Dev container | 2.18.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.18.0 | Deploy | |
| On AWS | 2.18.0 | Deploy | ||
| openvidu-browser | NPM package | 2.18.0 | NPM | |
| JS file | 2.18.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.18.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.18.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.18.0 | GitHub | |
| openvidu-angular | NPM package | 2.18.0 | NPM | |
| openvidu-react | NPM package | 2.18.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.16.0 | Kurento Docs |
Recording API has been extended in this release. The two main new features are:
This second point is the result of a small but significant refactoring of the Session object. Before, Session objects had custom attributes for defining default values for its recordings:
{
"defaultOutputMode": "COMPOSED",
"defaultRecordingLayout": "CUSTOM",
"defaultCustomLayout": "mySimpleLayout"
}
Now it has a single attribute defaultRecordingProperties that is an actual RecordingProperties object, containing all of the available attributes to customize recordings:
{
"defaultRecordingProperties": {
"name": "MyRecording",
"hasAudio": true,
"hasVideo": true,
"outputMode": "COMPOSED",
"recordingLayout": "CUSTOM",
"customLayout": "mySimpleLayout",
"resolution": "1280x720",
"frameRate": 25,
"shmSize": 536870912,
"mediaNode": "media_i-po39jr3e10rkjsdfj"
}
}
In this way, for example, it is now possible to record Sessions set to recording mode ALWAYS with only audio or only video. Before the lack of custom default recording properties for in the Session object made this impossible.
This refactoring introduces small breaking changes that must be addressed if your application initializes Session objects with any default recording property (defaultOutputMode, defaultRecordingLayout, defaultCustomLayout). This is all carefully detailed in the Breaking changes section of these release notes.
openvidu-browser SDK has been improved in many ways. The most important points are listed below:
session.on('exception', exception => {}). This event alerts of different problems that may appear when establishing media connections. You can take a look to the different types of error on ExceptionEventName attribute.nodeCrashed WebHook event πThere is a brand new CDR/WebHook event available in OpenVidu Pro. The new nodeCrashed event allows you to relocate any Session hosted at a Media Node that crashed into a different healthy Media Node. Take a look to its documentation here.
We keep improving the monitoring features of OpenVidu Pro. A very important aspect when analyzing wrong behaviors and possible bugs in your OpenVidu applications is the logging on the client side. Now with OpenVidu Pro you can enable configuration property OPENVIDU_BROWSER_LOGS (disabled by default) to make openvidu-browser automatically send its logs to Elasticsearch.
Only the openvidu-browser's own logs are sent (your application's own logs are not). You can inspect them from OpenVidu Inspector session history view.
In your OpenVidu Inspector session history view you will see now a new land page showing the percentage of successful and problematic sessions. Problematic sessions now show a new "Troubleshooting" section with the list of detected anomalies.
Previously the reconnection capabilities were based only on the health of the client-server signaling plane. But the media plane can break on its own, without affecting the signaling plane. And up to this point, the application was completely blind when facing these conditions: the media could simply freeze and nobody would be alerted. But now these situations are also taken into account and media connections will be restored automatically.
Take a look to the revamped section Automatic reconnection to learn more.
options attribute of the Filter (being set at newValue property of the event) was a string instead of an object. This only affected the local event (the user that triggered the event), remote events were not affected by this bug (those receiving the event from a different user).OPENVIDU_PRO_STATS_WEBRTC_INTERVAL.customSessionId could be interchanged when retrieving their information. Now they don't.There is a breaking change for the Recording API. We have consolidated the RecordingProperties object so it can be equally used when configuring the default recording properties of a session or when manually starting the recording of a session. This affects the operation of initializing a Session. Depending on whether you are consuming the REST API, openvidu-java-client SDK or openvidu-node-client SDK:
Before when initializing a Session:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"defaultOutputMode":"COMPOSED","defaultRecordingLayout":"BEST_FIT","defaultCustomLayout":"CUSTOM_LAYOUT"}' \
https://your.openvidu.ip/openvidu/api/sessions
Now:
curl --header "Content-Type: application/json" \
--request POST \
--data '{"defaultRecordingProperties":{"outputMode":"COMPOSED","recordingLayout":"BEST_FIT","customLayout":"CUSTOM_LAYOUT"}' \
https://your.openvidu.ip/openvidu/api/sessions
Before when creating a Session:
OpenVidu openvidu = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
SessionProperties properties = new SessionProperties.Builder()
.defaultOutputMode(Recording.OutputMode.COMPOSED)
.defaultRecordingLayout(RecordingLayout.CUSTOM)
.defaultCustomLayout("mySpecialLayout")
.build();
Session session = openVidu.createSession(properties);
Now:
OpenVidu openvidu = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
RecordingProperties recordingProperties = new RecordingProperties.Builder()
.outputMode(Recording.OutputMode.COMPOSED)
.recordingLayout(RecordingLayout.CUSTOM)
.customLayout("mySpecialLayout")
.build();
SessionProperties sessionProperties = new SessionProperties.Builder()
.defaultRecordingProperties(recordingProperties)
.build();
Session session = openVidu.createSession(sessionProperties);
Before when creating a Session:
var openVidu = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
var properties = {
defaultOutputMode: "COMPOSED",
defaultRecordingLayout: "CUSTOM",
defaultCustomLayout: "mySpecialLayout"
};
openVidu.createSession(properties).then(session => { ... });
Now:
var openVidu = new OpenVidu(OPENVIDU_URL, OPENVIDU_SECRET);
var properties = {
defaultRecordingProperties: {
outputMode: "COMPOSED",
recordingLayout: "CUSTOM",
customLayout: "mySpecialLayout"
}
};
openVidu.createSession(properties).then(session => { ... });
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.17.0 | Deploy | |
| On AWS | 2.17.0 | Deploy | ||
| Dev container | 2.17.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.17.0 | Deploy | |
| On AWS | 2.17.0 | Deploy | ||
| openvidu-browser | NPM package | 2.17.0 | NPM | |
| JS file | 2.17.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.17.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.17.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.17.0 | GitHub | |
| openvidu-angular | NPM package | 2.17.1 | NPM | |
| openvidu-react | NPM package | 2.17.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.16.0 | Kurento Docs |
OpenVidu Pro has always been focused on offering scalability features upon OpenVidu CE, and there was still one very important limitation: COMPOSED recording were not scalable, as they were being performed in the OpenVidu Server Pro Node. Until today: from 2.17.0, recording modules will be launched in Media Nodes. Since Media Nodes are infinitely scalable, the limit of simultaneous COMPOSED recordings has been effectively eliminated, and the load on your OpenVidu Server Pro node should remain much lower and stable. This is great news!
Until now OpenVidu always honored the preferred video codec requested by each client. This had a very important consequence: whenever 2 clients negotiated 2 different codecs, OpenVidu had to perform transcoding between them, which resulted in much more intensive CPU usage and poorer media quality. With 2.17.0 codecs are managed in a much better way:
Improving the performance and compatibility of your OpenVidu app has never been easier!
signalSent event πThis has been a very requested feature. You can now receive in your backend side all the signals sent to your OpenVidu Sessions. They will be received by your WebHook and registered in your CDR. Take a look at this new useful event here.
Just as it sounds. Now Microsoft's browser is also able to screen share in OpenVidu!
When deploying OpenVidu Pro on AWS now you are not forced to set a default size for all your Media Node. Simply indicate the EC2 instance type that you want as a parameter in the operation to add a new Media Node:
curl -u OPENVIDUAPP:YOUR_SECRET \
--request POST \
--header "Content-Type: application/json" \
--data '{"instanceType":"c5.2xlarge","volume":200}' \
https://your-openvidu-ip/openvidu/api/media-nodes
There is a new configuration property OPENVIDU_PRO_AWS_S3_HEADERS that allows defining any HTTP header value that the internal S3 client may require to upload recordings to the bucket. The internal S3 client also better manages expired credentials and tries to automatically renew them if necessary. Check out S3 recording upload here.
The REST operation to restart OpenVidu Pro and apply new configurations is now much quicker. Internal improvements have accelerated the process by several seconds.
There is now more information and better displayed in Kibana. This includes things like:
Check out the new monitoring section of the documentation.
shmSize wasn't being properly sent. Now it is.Session.createConnection. This affected the creation of IPCAM connections when using the Node SDK. This is now fixed.monitoringStats no longer exists. New Metricbeat event instead. This unifies the monitoring metrics collected from all nodes in the cluster.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.16.0 | Deploy | |
| On AWS | 2.16.0 | Deploy | ||
| Dev container | 2.16.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.16.0 | Deploy | |
| On AWS | 2.16.0 | Deploy | ||
| openvidu-browser | NPM package | 2.16.0 | NPM | |
| JS file | 2.16.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.16.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.16.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.16.0 | GitHub | |
| openvidu-angular | NPM package | 2.16.1 | NPM | |
| openvidu-react | NPM package | 2.16.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.15.0 | Kurento Docs |
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.
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:
Take a look to the official documentation: Uploading recordings to S3.
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:
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.
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.
This applies only to INDIVIDUAL recording, as in COMPOSED recording with custom layouts there is total freedom to record as you wish.
OpenVidu Pro offers a new health check REST API endpoint. Check it out in the documentation: GET openvidu/api/health.
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:
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.
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.
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!
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.
Now you can update any environment variable of your Media Nodes directly from the .env configuration 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 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:
Our flagship OpenVidu application keeps getting better. Here is the list of all improvements in 2.16.0:
Take a look to the documentation of our new tutorials:
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.
recordingStatusChanged event to 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.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_SECRET must comply with an alphanumeric format that easily prevents these failures.Consider the following points when upgrading to OpenVidu 2.16.0:
- and _). This helps preventing some important bugs caused by secrets with special chars not working fine in some internal services.POST /api/sessions/<SESSION_ID>/connection, the default value of body request property type has changed from IPCAM to WEBRTC. If you were publishing an IP camera and not providing βtypeβ property, now you must explicitly do so, with value βIPCAMβ.KIBANA_USER and KIBANA_PASSWORD to ELASTICSEARCH_USERNAME and ELASTICSEARCH_PASSWORD. You must transfer the values from the oldΒ .env configuration file to the new one, from the old parameters to the new ones. This is also noted in the official upgrading instructions./openvidu/. For example, what before was: POST /api/sessions/<SESSION_ID>/connection now 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: SUPPORT_DEPRECATED_API=false
If that property is set to false (by default it 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.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.15.0 | Deploy | |
| On AWS | 2.15.0 | Deploy | ||
| Dev container | 2.15.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.15.0 | Deploy | |
| On AWS | 2.15.0 | Deploy | ||
| openvidu-browser | NPM package | 2.15.0 | NPM | |
| JS file | 2.15.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.15.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.15.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.15.0 | GitHub | |
| openvidu-angular | NPM package | 2.15.0 | NPM | |
| openvidu-react | NPM package | 2.15.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.14.0 | Kurento Docs |
OpenVidu Pro has always had scalability as one of its main features. But until now, the responsibility for the management of the cluster fell on the users themselves, who had to actively monitor the status of their OpenVidu Pro clusters to add or remove nodes manually. In fact, we've observed that many users simply launch a new OpenVidu CE monolithic deployment whenever they need more capacity for more sessions, as this can be currently more convenient than managing an OpenVidu Pro cluster with REST API.
Of course this is not ideal. For that reason, with OpenVidu 2.15.0 we're pleased to introduced OpenVidu Pro Autoscaling. Now you can let OpenVidu Pro decide when should the cluster grow or shrink according to CPU load. This way you can forget about overloading your system and you can also have the price to pay at any moment adjusted in the most optimal way.
We have added a new Autoscaling section to OpenVidu Pro documentation. We invite you to take a look to it: Autoscaling
Now Safari users can share their screen as long as they are using Safari β₯ 13. This is great news for lots of people! Available for both OpenVidu CE and OpenVidu Pro.
OpenVidu tutorials have a new member in their family. Thanks to @Ninjak now you have available a simple Vue.js tutorial.
OpenVidu recording service has always offered 2 different modes of recording:
INDIVIDUAL recording is very efficient, but lacks the potential of building the recorded files in real time using custom designs. Can be done later in a different process, but of course this is extra work. COMPOSED mode is very powerful, as you can immediately obtain the final desired result just after stopping the recording. But this requires more CPU power per active recording.
Besides, COMPOSED recording requires OpenVidu to launch, manage and drop a recording module during the lifecycle of each recording. This process can make starting COMPOSED recordings a process with a somewhat slow response time. This is where the brand new COMPOSED_QUICK_START mode comes into play: some use cases may benefit of configuring OpenVidu Sessions with this recording mode if they need the recordings to start as quickly as possible, paying as a price a higher CPU usage during the whole lifecycle of the session.
COMPOSED_QUICK_START recording mode is available for both OpenVidu CE and OpenVidu Pro. You have further information in OpenVidu Docs: Composed quick start recording.
You can now run the following commands in your OpenVidu (CE or PRO) installation folder:
./openvidu versionΒ : will print out in the terminal all of the installation details of your deployment../openvidu reportΒ : will log in a file a complete report of the status of your deployment. This file can be very useful to quickly gather all of the information of your deployment in a single place.There are 2 major changes in the way OpenVidu Pro takes advantage of its Elastic stack:
audioActive and videoActive status when calling subscribeToAudio or subscribeToVideo (PR 443).OPENVIDU_RECORDING_PATH now can be changed. Before 2.15.0 a limitation was forcing this property to remain with its default value.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.14.0 | Deploy | |
| On AWS | 2.14.0 | Deploy | ||
| Dev container | 2.14.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.14.0 | Deploy | |
| On AWS | 2.14.0 | Deploy | ||
| openvidu-browser | NPM package | 2.14.0 | NPM | |
| JS file | 2.14.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.14.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.14.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.14.0 | GitHub | |
| openvidu-angular | NPM package | 2.14.2 | NPM | |
| openvidu-react | NPM package | 2.14.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.13.2 | Kurento Docs |
OpenVidu Call is our flagship demo application. It is an example of a common use case of videoconferencing application, built with love and available for everyone with its open source license.
People liked it so much that we decided to integrate it by default in OpenVidu 2.13.0 official deployments. Now, when deploying OpenVidu in production, OpenVidu Call is automatically added to the stack and you can start using it right away. But OpenVidu Call had some limitations that must be addressed. This is the complete changelog of OpenVidu Call in 2.14.0 release:
You can now easily change the port where your OpenVidu deployment listens with a simple configuration property change. Set HTTPS_PORT property to the desired value to seamlessly change all of the services exposed by OpenVidu from default 443 to any other port you want. This has been a heavily requested feature, as many developers prefer using 443 port for serving their own services in the same server hosting OpenVidu.
Besides this, OpenVidu also allows configuring with property HTTP_PORT an HTTP port (non-secure) to automatically redirect to whatever port has been defined in HTTPS_PORT. To sum up, by default URLs https://your.domain.com and http://your.domain.com will provide access to your OpenVidu deployment, as HTTPS_PORT is 443 by default and HTTP_PORT is 80. But you can now easily change these two values to whatever you prefer.
Another very demanded feature was having the ability to limit the IPs able to consume the administration services of OpenVidu. By administration services we mean: A) the frontend web page served by OpenVidu and B) OpenVidu REST API.
You can do this with config properties:
ALLOWED_ACCESS_TO_DASHBOARD: limits the ability to connect to OpenVidu CE dashboard and to OpenVidu Pro Inspector.ALLOWED_ACCESS_TO_RESTAPI: limits the ability to consume OpenVidu REST API (both CE and PRO).You can limit to a single IP, a single IP range, multiple IPs or multiple IP ranges. So total freedom in this regard:
ALLOWED_ACCESS_TO_DASHBOARD=198.51.100.1
# or ALLOWED_ACCESS_TO_DASHBOARD=198.51.100.0/24
# or ALLOWED_ACCESS_TO_DASHBOARD=198.51.100.1, 198.51.100.0/24
Now upgrading your OpenVidu deployment will be a very easy guided process. We have included migration guides to upgrade to 2.14.0 for bot OpenVidu CE and OpenVidu Pro. Take a look at them!
A new platform has been added to OpenVidu family. Now Samsung browser for Android is officially supported by OpenVidu. Not one of the most widespread browsers, but still with a small market share.
AWS Africa (Cape Town) af-south-1 region is available now for deploying OpenVidu on AWS, both OpenVidu CE and OpenVidu Pro tiers. By using our CloudFormation template, you will have your OpenVidu deployment up and running in just a few minutes.
Deploying OpenVidu CE on AWS and deploying OpenVidu Pro on AWS
OpenVidu 2.14.0 brings all the goodness of Kurento 6.13.2 release. It includes many fixes (especially in libnice library) that will enhance the stability of OpenVidu.
OpenVidu.initPublisher. Where being used when calling OpenVidu.getUserMedia, but not for OpenVidu.initPublisher (issue 456).| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| OpenVidu CE | On Premises | 2.13.0 | Deploy | |
| On AWS | 2.13.0 | Deploy | ||
| Dev container | 2.13.0 | DockerHub | ||
| OpenVidu Pro | On Premises | 2.13.0 | Deploy | |
| On AWS | 2.13.0 | Deploy | ||
| openvidu-browser | NPM package | 2.13.0 | NPM | |
| JS file | 2.13.0 | GitHub | ||
| openvidu-java-client | MVN package | 2.13.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.13.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.12.0 | GitHub | |
| openvidu-angular | NPM package | 2.12.0 | NPM | |
| openvidu-react | NPM package | 2.12.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.13.1 | Kurento Docs |
OpenVidu 2.13.0 introduces a brand new Docker-based deployment. It uses docker-compose to manage all of the necessary services. Why did we make the decision of migrating to Docker after 2.12.0 release? It was a mix of two reasons:
First reason: OpenVidu users have always asked for a Docker-based deployment. OpenVidu users are clever. Docker is the first thing an OpenVidu user will encounter when going through any of our tutorials, as we recommend to use a special OpenVidu dev container to quickly run them. And of course, Docker greatly simplifies the management of the services for those administrating them. Just look at this beauty: now you can restart your whole OpenVidu deployment with this command (and we mean all of its services, which are 6 in total for an OpenVidu CE deployment):Β ./openvidu restart
Second reason: OpenVidu developers (that's usΒ :) have always had problems helping users of the platform due to the lack of homogeneity in OpenVidu deployments out there. The reality is that there's an astounding variety of cloud providers, virtual machines, OS flavours and other stuff that may influence how an OpenVidu installation behaves. Docker fixes this. Now every OpenVidu deployment will be basically the same to the other ones, so we will be able to reproduce any problem, and the proper fix for the affected user will generally apply to all OpenVidu installations. Isn't that awesome?
Visit Deploying OpenVidu CE on premises and Deploying OpenVidu Pro on premises to see for yourself how easy it is now to deploy OpenVidu.
The new version of Microsoft Edge has joined the list of supported platforms by OpenVidu. Both the desktop Windows version and the Android version are now supported (of course, totally compatible with all other supported platforms).
OpenVidu sessions are initialized through the REST API or with any supported server SDK (see here). And they are automatically closed once the last user connected to it leaves the session. But sessions initialized through the REST API that have no connected users remained in memory forever. Now this has been addressed with a garbage collector that will periodically clean up all those non-active sessions.
Publisher.subscribeToRemote. If they called Publisher.publishAudio, Publisher.publishVideo and Publisher.replaceTrack, those where not taking effect. Now they do. And now they also properly stop their media stream tracks when disposing the Publisher object so the camera light of devices shuts down.Publisher.replaceTrack method now can be used on unpublished Publishers. These are Publishers that have not been called with Session.publish or that have been called Session.unpublish after being published.openvidu.pro.cluster.mode was manual. Now it doesn't.The new Docker deployment stack requires OpenVidu to manage its configuration properties following the standard environment variable syntax rules. For that reason, all of OpenVidu configuration properties have been renamed from this.is.my-property=VALUE to THIS_IS_MY_PROPERTY=VALUE
OpenVidu configuration docs are of course updated to this new syntax. As production deployments of OpenVidu 2.13.0 will requires users to re-install all of the services, new installations will already bring the new syntax by default. The official [OpenVidu development container] should also use now the new syntax for its configuration properties.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.12.0 | NPM | |
| JS file | 2.12.0 | GitHub | ||
| openvidu-server | JAR | 2.12.0 | GitHub | |
| Docker container | 2.12.0 | DockerHub | ||
| Docker container (+KMS) | 2.12.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.12.1 | MVN Repository | |
| openvidu-node-client | NPM package | 2.12.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.12.0 | GitHub | |
| openvidu-angular | NPM package | 2.12.0 | NPM | |
| openvidu-react | NPM package | 2.12.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.13.0 | Kurento Docs |
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
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.
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.
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).
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.
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 BUG FIXES).
You can check out Automatic reconnection section of OpenVidu official documentation to learn more
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
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.
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:
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!
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!
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 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!
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.
openvidu.recording.public-access could not take effect when set to false. Now it always does.to array now does not trigger a fatal error.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.11.0 | NPM | |
| JS file | 2.11.0 | GitHub | ||
| openvidu-server | JAR | 2.11.0 | GitHub | |
| Docker container | 2.11.0 | DockerHub | ||
| Docker container (+KMS) | 2.11.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.11.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.11.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.11.0 | GitHub | |
| openvidu-angular | NPM package | 2.11.0 | NPM | |
| openvidu-react | NPM package | 2.11.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.11.0 | Kurento Docs |
You are now able to receive OpenVidu events in your application server by using the brand new Webhook service. This is a feature that has been requested for a long time, and you can start using it right now.
You have all the information in the official documentation:Β OpenVidu Server Webhook
Are you tired of having to write all the configuration parameters in openvidu-server launch command? Well, now you can externalize all your configuration into a separate file. You just need to use property spring.config.additional-location like this:
java -Dspring.config.additional-location=/path/to/application.properties -jar openvidu-server.jar
Then all configuration parameters listed in that file will be used.
You have all the information in the official documentation:Β Externalizing configuration
Finally OpenVidu brings the possibility of deploying a cluster with multiple Media Nodes. OpenVidu Pro will distribute your sessions among all available Media Nodes based on their current load. Take a look to the official OpenVidu Pro tier documentation to learn more: Scalability
Whenever you restart OpenVidu Server Pro by using the REST API, the new parameters you provide will be saved to disk. This way you will be able to stop the service or even the host without losing the last configuration you provided when restarting OpenVidu Server Pro through REST API.
Although this is not a visible feature for OpenVidu final users, we would like to mention that we have updated OpenVidu Server to Spring Boot 2. OpenVidu Server core has been based on Spring Boot 1 since the beginning of the project, but we decided to invest some time to upgrade it to the latest stable version to take advantage of its many new improvements. This should translate in better performance, stability and security.
OpenVidu CDR events recordingStarted and recordingStopped are now deprecated in favour of recordingStatusChanged event. Check this new event here. Besides, event recordingStopped now won't provide the final values of the recording (specifically its duration and size properties, that will be 0). You will have to listen to recordingStatusChanged with status ready to get them.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.10.0 | NPM | |
| JS file | 2.10.0 | GitHub | ||
| openvidu-server | JAR | 2.10.0 | GitHub | |
| Docker container | 2.10.0 | DockerHub | ||
| Docker container (+KMS) | 2.10.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.10.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.10.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.10.0 | GitHub | |
| openvidu-angular | NPM package | 2.10.0 | NPM | |
| openvidu-react | NPM package | 2.10.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.10.0 | Kurento Docs |
This release brings support to more and more clients, so you can expand your OpenVidu client-side range. Of course, they are all compatible with each other and with every other platform already supported.
OpenVidu has supported most popular browsers since its inception, and past releases brought official support to Android and iOS through Ionic. But there was still a gap regarding desktop applications. With 2.10.0 we are happy to announce that you are now able to implement your Windows, OSX and Linux native app with OpenVidu through Electron.
What is Electron? It is great framework for building native desktop applications with classic web technologies (simple, good old HTML, CSS and JS).
Electron is to desktop operating systems what Ionic is to mobile operating systems. Some examples of great applications built with Electron are Slack, Skype, Atom or Visual Studio Code Using Electron means that the same codebase you are already using for your web and mobile application can be used to build a desktop app that will work on Windows, OSX and Linux. Take a look to our brand new openvidu-electron tutorial, and you will have a desktop OpenVidu app working in minutes. It even brings screen-sharing!
Youβre not convinced by Ionic? Now you can choose React Native framework for developing your OpenVidu mobile app. React Native is rather similar to Ionic from the developers perspective, but at the same time its nature is very different. Essentially, it really uses native Android and iOS UI components under the hood while Ionic is based on WebView (in a nutshell, it runs on the browser).
React Native support is not part of the open source stack of OpenVidu platform. Please, contact us through Commercial page to ask for React Native support. You can then use openvidu-react-native tutorial to quickly get started
Yes, itβs 2019. But thereβs still a lot of companies out there that provide/require IE support and need videoconferencing systems to work in this browser relic. So thatβs why we have brought OpenVidu support to IE through Temasys plugin. Only IE 11 is supported (going further back was too much of a pain).
Internet Explorer support is not part of the open source stack of OpenVidu platform. Please, contact us through Commercial page to ask for React Native support. You can then use openvidu-internet-explorer tutorial to quickly get started
StreamManager.addVideoElement method. Now it doesnβt.| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.9.0 | NPM | |
| JS file | 2.9.0 | GitHub | ||
| openvidu-server | JAR | 2.9.0 | GitHub | |
| Docker container | 2.9.0 | DockerHub | ||
| Docker container (+KMS) | 2.9.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.9.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.9.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.9.0 | GitHub | |
| openvidu-angular | NPM package | 2.9.0 | NPM | |
| openvidu-react | NPM package | 2.9.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.10.0 | Kurento Docs |
Our team has released Kurento 6.10.0, which can now be installed in Ubuntu 18.04 systems. This is a milestone we've been working on for quite some time, and we finally believe we're ready to launch official support for the newest Ubuntu LTS version. Deployment section in OpenVidu Docs is properly updated to inform about this.
We still consider Ubuntu Bionic to be in a preliminary support state, and some bugs may appear. In fact, we know for sure there's one limitation: no OpenCV filters will work in Ubuntu 18.04 at this moment. OpenVidu has supported audio and video filters for a long time now, and it is a cool feature that allows developers to implement some advanced audio and video real-time processing in the server side. But unfortunately Kurento has not been updated yet to support it in Bionic, so no FaceOverlayFilter or ChromaFilter will work in new Ubuntu version. But you can still use GStreamer filters!
OpenVidu Server now checks all required conditions at boot time, which helps solving misconfiguration problems when deploying on Ubuntu. This includes every requirement related to permissions and installed software. If something is missing, wrong or there are not enough permissions in certain path, the OpenVidu Server process immediately exits with a clear description about what happened and a possible solution to fix it.
In our experience, this makes the process of installing OpenVidu Server directly in Ubuntu so much easier and manageable.
If OpenVidu Server loses its connection to Kurento Media Server, now it will try to reconnect automatically. When it does so, if it is a new instance of Kurento, every stream of every previously active session will be destroyed with reason mediaServerDisconnect and every active recording will be stopped with same reason, but your users will not be disconnected from your sessions. This way you can directly re-publish and re-subscribe any desired stream right away.
This may help in case Kurento crashes: your users will have lost their media connections, but they will still be connected to their OpenVidu sessions and will only have to re-establish streams once OpenVidu Server is connected to a new Kurento instance.
Do you want to upgrade your OpenVidu deployment? Now you have a section entirely dedicated to it in the documentation. If you have deployed OpenVidu in AWS, it's as easy as launching a single command. If you have chosen Ubuntu deployment, then you will have to manually run some commands. Either way, you have available proper instructions now.
OpenVidu has supported native screen-sharing for Firefox since its inception, but Google decided to have Chrome require an extension to allow screen-sharing. Finally they changed their mind and brought Chrome up to the standard, supporting getDisplayMedia API.
So, our client library openvidu-browser now supports native screen-sharing for Chromeβ₯72. No extension needed for these browsers!
Our best demo application has been updated with some exciting new features:
failed status is set to this recordings, so you can take care of them properly.recordingStopped event for INDIVIDUAL recordings wasn't updating their duration and size values (both properties had value 0)POST /api/sessionsWe are excited to announce OpenVidu Pro: a commercial tier for OpenVidu platform. Check it out here.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.8.0 | NPM | |
| JS file | 2.8.0 | GitHub | ||
| openvidu-server | JAR | 2.8.0 | GitHub | |
| Docker container | 2.8.0 | DockerHub | ||
| Docker container (+KMS) | 2.8.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.8.1 | MVN Repository | |
| openvidu-node-client | NPM package | 2.8.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.8.0 | GitHub | |
| openvidu-angular | NPM package | 2.8.0 | NPM | |
| openvidu-react | NPM package | 2.8.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.9.0 | Kurento Docs |
Finally individual stream recording is available in OpenVidu. When recording a session you can now configure it to store each published stream in its own file.
This, on the one hand, gives developers lots of freedom to compose any kind of layout and achieve any kind of result once the recording has stopped, by using some post-processing video tool. On the other hand, this type of recording has proven to be 4x more efficient in comparison with previous grid recording in our first tests, allowing a better quality and a higher number of streams per recording, and more simultaneous recordings.
We have entirely rewritten Recording documentation explaining all these new features. Take a look at it!
Configure your recordings to be audio-only or video-only. This is available for both COMPOSED and INDIVIDUAL recordings. It is worth mentioning that audio-only COMPOSED recordings takes advantage of the new recording capabilities introduced in this release to make it an extremley efficient process. Check out the full documentation on this subject.
resolution when starting recordings. With it you can set the width and height in pixels of the recorded file. This is only available for COMPOSED recordings. INDIVIDUAL recordings will always record the video files with the native resolution of each video streamGET /config. You can consult OpenVidu Server version and all active configuration properties with it. Check it out here.Even though this is not a major update with incompatibility changes according to semver, there are in fact a couple of changes that are worth mentioning:
Recording.hasAudio, Recording.hasVideo and Recording.name have been included into new Recording.properties attribute: Recording.properties.hasAudio, Recording.properties.hasVideo and Recording.properties.name| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.7.0 | NPM | |
| JS file | 2.7.0 | GitHub | ||
| openvidu-server | JAR | 2.7.0 | GitHub | |
| Docker container | 2.7.0 | DockerHub | ||
| Docker container (+KMS) | 2.7.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.5.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.5.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.7.0 | GitHub | |
| openvidu-angular | NPM package | 2.7.1 | NPM | |
| openvidu-react | NPM package | 2.7.1 | NPM | |
| Kurento Media Server | Ubuntu package | 6.8.1 | Kurento Docs |
OpenVidu finally brings Safari to its collection of supported platforms. Two things to take into account when developing a Safari compatible application:
SUBSCRIBER role (only receiving video, without accessing their microphone or camera). Learn more hereApple support is completed with Ionic platform for iOS. Now you can implement an Ionic app that will compile OK into an iOS native application. Our openvidu-ionic tutorial is now fully compatible with iPhones and iPads. We recommend to use it as a starting point for your Android/iOS application, but in openvidu-ionic tutorial you also have everything you need to integrate OpenVidu in any Ionic app. Take a look at it!
streamAudioVolumeChange πYou can now listen to volume changes in any Publisher or Subscriber object. You can, for example, add a real-time audio wave or perform some action when certain level of noise or silence is reached. More details here.
cursor:none). Issue #138Recording.MANUAL now automatically stop their recording if last participant left the session and no user published to the same session in 2 minutes. Issue #149Publisher.publishAudio and Publisher.publishVideo may be called without having initialized a Session or having called Session.publish(Publisher)| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.6.0 | NPM | |
| JS file | 2.6.0 | GitHub | ||
| openvidu-server | JAR | 2.6.0 | GitHub | |
| Docker container | 2.6.0 | DockerHub | ||
| Docker container (+KMS) | 2.6.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.5.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.5.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.6.0 | GitHub | |
| openvidu-angular | NPM package | 2.6.0 | NPM | |
| openvidu-react | NPM package | 2.6.0 | NPM | |
| Kurento Media Server | Ubuntu package | 6.8.1 | Kurento Docs |
There's a complete tutorial in OpenVidu Docs to get a native Android app working with OpenVidu in just a few steps. You can just clone and use our sample application as a starting point or maybe you want to add OpenVidu to your existing Ionic app. Here you have the necessary configuration steps to do so (basically Android permissions stuff).
We are currently working on making OpenVidu work on iOS with Ionic.
OpenVidu 2.5.0 brought a fantastic and a differentiating element: real time audio and video filters. Now we have extended this capability to support new GStreamer based filters such as textoverlay, timeoverlay or clockoverlay.
You can embed any text, the timestamp of the video or the current time, easily customizing its position and format. Check these filters in GStreamer section of filters documentation.
Whenever you stop the recording of a session, OpenVidu will automatically generate a thumbnail for the video, getting it from the middle of the video timeline. You can access it fromΒ https://OPENVIDU_SERVER_IP:4443/recordings/RECORDING_NAME.jpg
Do not worry about their lifecycle: they are linked to the video file itself. If you decide to delete the recording, thumbnail will also be deleted.
Time ago we ran into a pretty ugly bug that was causing some problems during WebRTC negotiation, resulting in some clients located in complex networks (like a company's internal network) not being able to connect to OpenVidu Server. What developers perceived was that in certain scenarios some users simply couldn't receive or send any media connection.
This bug has been completely solved in OpenVidu 2.6.0. Now media connections will work fine in almost every client network configuration.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.5.0 | NPM | |
| JS file | 2.5.0 | GitHub | ||
| openvidu-server | JAR | 2.5.0 | GitHub | |
| Docker container | 2.5.0 | DockerHub | ||
| Docker container (+KMS) | 2.5.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.5.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.5.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.5.0 | GitHub | |
| openvidu-angular | NPM package | 2.5.0 | NPM | |
| openvidu-react | NPM package | 2.5.0 | NPM |
OpenVidu API offers a simple way of applying filters to video and audio streams in the server side by making use of Kurento Media Server capabilities. See Voice and video filters section to learn more.
In version 2.3.0 we introduced 4 new configuration parameters for OpenVidu Server that allow the limitation of the video bandwidth both sent and received to/from OpenVidu Server, affecting all video streams in a global manner. Now it is possible to specifically configure certain input and output bandwidth for every user connected to a session. This way you can customize the bandwidth for each Publisher and Subscriber object of each Connection object. Users with no specific configuration will use the global values.
You can set custom bandwidths by using REST API, openvidu-java-client or openvidu-node-client:
REST API: in POST /api/tokens append a property in the json body like this
"kurentoOptions": {
"videoMaxRecvBandwidth": 1000,
"videoMinRecvBandwidth": 1000,
"videoMaxSendBandwidth": 1000,
"videoMinSendBandwidth": 1000
}
openvidu-java-client: build your tokens like this
KurentoOptions kurentoOptions = new KurentoOptions.Builder()
.videoMaxRecvBandwidth(1000)
.videoMinRecvBandwidth(1000)
.videoMaxSendBandwidth(1000)
.videoMinSendBandwidth(1000)
.build();
TokenOptions tokenOptions = new TokenOptions.Builder()
.data("User data")
.role(OpenViduRole.PUBLISHER)
.kurentoOptions(kurentoOptions)
.build();
String myToken = mySession.generateToken(tokenOptions);
openvidu-node-client: build your tokens like this
var tokenOptions = {
data: "User data",
role: OpenViduRole.PUBLISHER,
kurentoOptions: {
videoMaxRecvBandwidth: 1000,
videoMinRecvBandwidth: 1000,
videoMaxSendBandwidth: 1000,
videoMinSendBandwidth: 1000
}
};
mySession.generateToken(tokenOptions).then(token => { ... } );
Connection objects have a brand new property very useful for session analysis: platform. It carries a complete description of the platform used by the client to connect to your session. For example: "Chrome 69.0.3497.81 on OS X 10.13.6 64-bit" or "Firefox Mobile 62.0 on Mobile (Android 8.1.0)"
You can get this information by retrieving session information with the REST api (GET /api/sessions or GET /api/sessions/SESSION_ID) or inspecting openvidu-java-client and openvidu-node-client Session objects: calling Session.fetch() or OpenVidu.fetch() will update the status of their activeConnections property. Then you can check it out in openvidu-node-client (property Session.activeConnections) or openvidu-java-client (method Session.getActiveConnections())
Session, Connection and Publisher objects now have createdAt property, indicating when these objects where initialized in OpenVidu Server. This property has been integrated to maintain consistency with OpenVidu Server Call Detail Record, which has already been storing it in previous versions (check "timestamp" property of every CDR entry).
OpenVidu.checkScreenSharingCapabilities(). It allows developers to know if the client platform supports screen sharing (see its declaration in OpenVidu Documentation)We introduced OpenVidu Web Component in release 2.3.0. Now we offer native libraries for both Angular and React (latest versions) to insert the same powerful component in your applications by making use of each framework capabilities. You can check a tutorial for OpenVidu Angular (openvidu-library-angular) and for OpenVidu React (openvidu-library-react) right now.
Of course you can keep using OpenVidu Browser library instead of these components in any frontend framework. These tutorials show a basic use of OpenVidu Browser in an Angular app (openvidu-angular) and in a React app (openvidu-react).
PublisherProperties.videoSource was of type MediaStreamTrack (custom stream got with OpenVidu.getUserMedia()). Issue #107, PR #108RTCPeerConnection.getRemoteStreams and RTCPeerConnection.getLocalStreams to RTCPeerConnection.getReceivers and RTCPeerConnection.getSenders. Issue #54PublisherProperties.videoSource/audioSource are provided as MediaStreamTracks. PR #109| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.4.0 | NPM | |
| JS file | 2.4.0 | GitHub | ||
| openvidu-server | JAR | 2.4.0 | GitHub | |
| Docker container | 2.4.0 | DockerHub | ||
| Docker container (+KMS) | 2.4.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.4.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.4.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.4.0 | GitHub |
Backend clients are now compatible with REST API 2.3.0, adding methods:
Session.close(): close a Session from your backendSession.forceDisconnect(): force some user to leave a SessionSession.forceUnpublish(): force some user to unpublish a Publisher from a SessionSession.fetch(): bring Session information from OpenVidu ServerOpenVidu.fetch(): bring information from every active Session from OpenVidu ServerYou can call methods Session.fetch() and OpenVidu.fetch() to bring the current status of sessions from OpenVidu Server. You can consult now directly from OpenVidu Java Client / OpenVidu Node Client all the active sessions with OpenVidu.getActiveSessions() / OpenVidu.activeSessions and the active connections of a session with Session.getActiveConnections() / Session.activeConnections.
Event recordingStopped event now has reason property. Can be:
"recordingStoppedByServer": the recording was stopped by the application (using REST API, OpenVidu Java Client or OpenVidu Node Client)"lastParticipantLeft": if the Session was configured for automatic recording (RecordingMode.ALWAYS, check OpenVidu Node Client docs for more info), then it stopped because the last participant left the session"sessionClosedByServer": the recording stopped because the session was forcibly closed by the application (using REST API, OpenVidu Java Client or OpenVidu Node Client)"openviduServerStopped": the recording stopped because OpenVidu Server process unexpectedly stopped (cannot be guaranteed)Session.publish, Session.unpublish and Session.publish for the same Publisher object (having unpublished audio or video in between the calls)| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.3.0 | NPM | |
| JS file | 2.3.0 | GitHub | ||
| openvidu-server | JAR | 2.3.0 | GitHub | |
| Docker container | 2.3.0 | DockerHub | ||
| Docker container (+KMS) | 2.3.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.2.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.2.0 | NPM | |
| openvidu-webcomponent | ZIP | 2.3.0 | GitHub |
OpenVidu platform now offers an easier way to get started: just include our new Web Component into your web and start enjoying video call capabilities with just 3 new lines of code:
Add to your index.html OpenVidu Web Component files:
<link rel="stylesheet" href="openvidu-webcomponent.css" />
<script src="openvidu-webcomponent.js"></script>
And add your video-call element wherever you want in your application:
<openvidu-webcomponent session-config='{"user":"NICKNAME", "token":"TOKEN"}' theme="dark"></openvidu-webcomponent>
Being NICKNAME the user's name during the call and TOKEN one token generated in OpenVidu Server. Of course, if you want to connect users to the same session, the tokens should be generated for the same session.
Attribute theme can be dark or light. Use the one that better fits your application.
OpenVidu Web Component supports a reasonable amount of different dimensions, and every video displayed inside of it will be automatically relocated and resized for its optimal position upon window resizing. You can set the position, width and height of the component by styling it like this:
position to absolute or fixed, depending on your web layout and the desired behavior you want the component to have.widthheighttop or bottomright or leftFor example, the following CSS rule would position the upper OpenVidu Web Component in the bottom-right corner of your web, taking up half of the height of the page and a third of its width.
openvidu-webcomponent {
position: absolute;
bottom: 0;
right: 0;
width: 33vw;
height: 50vh;
}
If you give enough width to the component (at least 700px), users can communicate through an integrated chat.
To see some images of OpenVidu Web Component in action, check this post on Medium. If you want to learn more about OpenVidu Web Component, visit Tutorials section
OpenVidu Browser now lets users connected to a Session know when any Stream they are subscribed to undergoes any possible change in its properties. Every Session object will dispatch this new event (you can subscribe to it to every Publisher or Subscriber object too). This event can refer to the following Stream properties:
Stream.audioActive: this property may change if the user publishing the Stream calls Publisher.pusblishAudio(bool).Stream.videoActive: this property may change if the user publishing the Stream calls Publisher.publishVideo(bool).Stream.videoDimensions: this property may change if...So, for example, now you can do:
var OV = new OpenVidu();
var session = OV.initSession();
session.on('streamPropertyChanged', event => {
if (event.changedProperty === 'audioActive') {
console.log('The state of the audio of the publisher has changed. Is enabled? -> ' + event.newValue);
} else if (event.changedProperty === 'videoActive') {
console.log('The state of the video of the publisher has changed. Is enabled? -> ' + event.newValue);
} else if (event.changedProperty === 'videoDimensions') {
console.log('The video dimensions of the publisher has changed. New dimensions: ' + event.newValue);
}
});
This way you can react more easily upon this variations in the published streams and update your application's layout accordingly.
You can check capabilities property of Session object to know which methods are able to invoke each one of your clients, depending on their role. Also, if a client tries to call a method for which he has no permissions, now an OpenViduError is thrown with property name being OPENVIDU_PERMISSION_DENIED.
At last developers have available the new role that has been in our roadmap for a long time. Users connecting to a session with a token configured with MODERATOR role can call every method granted for SUBSCRIBER and PUBLISHER roles, but also:
Session.forceDisconnect: you can evict any user from the Session (force the method Session.disconnect)Session.forceUnpublish: you can stop the Publisher of any user publishing in the Session (force the method Session.unpublish)5 new methods join the REST API of OpenVidu Server:
Future iterations will add this capabilities to openvidu-java-client and openvidu-node-client libraries
We have included a first way to set the maximum and minimum bandwidths for the media connections established between browsers and OpenVidu Server. You can configure it with the following system properties, as stated in OpenVidu Server configuration sections:
openvidu.streams.video.max-recv-bandwidth: Maximum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained (default 1000)openvidu.streams.video.min-recv-bandwidth: Minimum video bandwidth sent from clients to OpenVidu Server, in kbps. 0 means unconstrained (default 300)openvidu.streams.video.max-send-bandwidth: Maximum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained (default 1000)openvidu.streams.video.min-send-bandwidth: Minimum video bandwidth sent from OpenVidu Server to clients, in kbps. 0 means unconstrained (default 300)Future iterations will study the possibility of configuring this same parameters for each session individually or even for each incoming or outgoing WebRTC connection (maybe as part of
PublisherPropertiesorSubscriberProperties)
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.2.0 | NPM | |
| JS file | 2.2.0 | GitHub | ||
| openvidu-server | JAR | 2.2.0 | GitHub | |
| Docker container | 2.2.0 | DockerHub | ||
| Docker container (+KMS) | 2.2.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.2.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.2.0 | NPM |
OpenVidu now offers integrated and automated support for TURN server. We encourage developers to check out our post on Medium to learn more about it.
The platform now integrates by default a COTURN server as part of its ecosystem. This means that media connections will work OK even when clients are located on restricted networks. When deploying OpenVidu Server in Amazon Web Services with our Cloud Formation template no changes are required at all. If you are deploying OpenVidu Server on your own in an Ubuntu machine, installation instructions have changed a little bit. You have them properly updated here.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.1.0 | NPM | |
| JS file | 2.1.0 | GitHub | ||
| openvidu-server | JAR | 2.1.0 | GitHub | |
| Docker container | 2.1.0 | DockerHub | ||
| Docker container (+KMS) | 2.1.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.0.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.0.0 | NPM |
OpenVidu Browser support for video management
We have implemented a new class in OpenVidu Browser aimed to better support declarative frontend frameworks such as Angular, React or Vue.js.
Now Publisher and Subscriber objects both inherit from StreamManager, which provides 2 different methods to tell OpenVidu what DOM video players should display each specific stream (addVideoElement and createVideoElement). This allows us to let OpenVidu take control of the video elements (even if our framework dynamically creates them) and do not worry about its internals. This is all explained in detail in Manage video players section.
If you want to check out a real example of this behavior, explore our renovated OpenVidu Angular tutorial.
| Artifact | Type | Compatible Version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 2.0.0 | NPM | |
| JS file | 2.0.0 | GitHub | ||
| openvidu-server | JAR | 2.0.0 | GitHub | |
| Docker container | 2.0.0 | DockerHub | ||
| Docker container (+KMS) | 2.0.0 | DockerHub | ||
| openvidu-java-client | MVN package | 2.0.0 | MVN Repository | |
| openvidu-node-client | NPM package | 2.0.0 | NPM |
This is the first breaking change update for OpenVidu, which brings in lots of new features and internal improvements.
OpenVidu Browser new methods
Session.publish(): now returns a Promise so you can tell if the method was successful or not.Session.signal(): now returns a Promise so you can tell if the method was successful or not.Subcriber.subscribeToAudio() and Subscriber.subscribeToVideo(): new methods that allows you to mute the audio or video tracks of a remote stream.OpenVidu.initPublisher(): now expects properties as interface PublisherProperties. They include:
{
audioSource: undefined, // The source of audio. If undefined default audio input
videoSource: undefined, // The source of video. If undefined default video input
publishAudio: true, // Whether you want to start publishing with your audio unmuted or muted
publishVideo: true, // Whether you want to start publishing with your video enabled or not
resolution: '640x480', // The resolution of your video
frameRate: 30, // The frame rate of your video
insertMode: 'APPEND', // How the video will be inserted in the target element
mirror: false // Whether to mirror your local video or not
}
Session.subscribe(): now expects properties as interface SubscriberProperties. They include:
{
insertMode: 'APPEND', // How the video will be inserted in the target element
subscribeToAudio: true, // Whether to initially subscribe to the stream's audio track or not
subscribeToVideo: true // Whether to initially subscribe to the stream's video track or not
}
OpenVidu.getDevices(): now you can use certain video or audio input device when calling OpenVidu.initPublisher(), thanks to properties audioSource or videoSource of PublisherProperties object. Just set these variables to the property deviceId of any of the devices returned by this method.
OpenVidu.getUserMedia(): method improved. Now devs can customize a MediaStream object before calling OpenVidu.initPublisher() method, setting property audioSource or videoSource to a MediaStreamTrack object (see docs for further information)OpenVidu Browser new properties
Stream.frameRate: new property defining the frame rate of video streams. This property will only have value if the Publisher owning the stream has set property frameRate of PublisherProperties when calling OpenVidu.initPublisher()OpenVidu Browser events
accessDialogOpened and accessDialogClosed: dispatched by Publisher objects when the browser asks the user to grant permissions to camera or michrophone by opening a pop-up. You can use them to warn your users about it.recordingStarted and recordingStopped: dispatched by Session object when the recording of a Session starts and stops. You can customize which clients will receive this event thanks to new property openvidu.recording.notification (see OpenVidu Server configuration)publisherStartSpeaking and publisherStopSpeaking improved: more customizable thanks to OpenVidu.setAdvancedConfiguration() and better overall performance.streamDestroyed, connectionDestroyed and sessionDisconnected have new property reason. This gives more information about why the events have been dispatched so you can take specific actions depending on the context: maybe a stream has been destroyed because the user publishing has deliberately diposed it or maybe the network connection has unexpectedly closed (see docs for StreamEvent, ConnectionEvent and SessionDisconnectedEvent)Other improvements in OpenVidu Browser
OpenVidu Server new features
name for recordings: you can now specify which name should OpenVidu Server give to each one of your recording files. You can do it by using the REST API (by setting body parameter "name" in POST /api/recordings/start), openvidu-java-client (by using RecordingProperties.Builder.name()) or openvidu-node-client (by setting property RecordingProperties.name)sessionId. You can take advantage of this new property to facilitate the mapping between OpenVidu Server 'session' entities and your own 'session' entities. You can set it by using the REST API (by setting body parameter "customSessionId" in POST /api/sessions), openvidu-java-client (by using SessionProperties.Builder.customSessionId()) or openvidu-node-client (by setting property SessionProperties.customSessionId)recordingStarted and recordingStopped, property reason for events sessionDestroyed, participantLeft and webrtcConnectionDestroyed.connectionDestroyed event is sent to the rest of participants with property reason set to networkDisconnect.OpenVidu Browser
OpenVidu.initSession now doesn't receive any input parameter.OpenVidu.initPublisher input parameters have changed. Now properties parameter must match PublisherProperties interface.Session.connect method has been promisified. Change the last mandatory callback parameter for a Promise implementation: session.connect(token, (error) => { ... }) to session.connect(token).then(() => {...}).catch(error => {...}); OpenVidu Java Client
Archive entities are now called Recording. This includes: class Archive to Recording, class ArchiveMode to RecordingMode, class ArchiveLayout to RecordingLayout, method SessionProperties.archiveLayout() to SessionProperties.recordingLayout(), method SessionProperties.archiveMode() to SessionProperties.recordingMode(), method SessionProperties.Builder.archiveLayout() to SessionProperties.Builder.recordingLayout(), method SessionProperties.Builder.archiveMode() to SessionProperties.Builder.recordingMode()RecordingLayout property in SessionProperties.Builder is now configured calling method defaultRecordingLayout() instead of recordingLayout(). This means that if one Session is gonna be recorded more than once, each recording layout may be customize with RecordingProperties.Builder.recordingLayout(), which will overwrite the default one globally configured in SessionProperties object. OpenVidu Node Client
TokenOptions, SessionProperties and RecordingProperties. For example, instead of getting a TokenOptions object like this: var tokenOptions = new TokenOptions.Builder().data(serverData).role(role).build() now it must be like this: var tokenOptions = {data: serverData, role: role}Session.getSessionId() is now synchronous, but method OpenVidu.createSession() is now asynchronous (the reason is pretty simple: now method createSession implements the behavior that getSessionId was providing the first time it was called for certain Session object).Session.generateToken(tokenOptions?, callback): void (now Session.generateToken(tokenOptions?): Promise<string>) and method Session.getSessionId(callback): void (now OpenVidu.createSession(): Promise<Session>, take also into account that the async call has changed from one method to the other as stated in the previous point).Archive entities are now called Recording. This includes: object Archive to Recording, object ArchiveMode to RecordingMode, object ArchiveLayout to RecordingLayout, method SessionProperties.archiveLayout() to SessionProperties.recordingLayout(), method SessionProperties.archiveMode() to SessionProperties.recordingMode(), method SessionProperties.Builder.archiveLayout() to SessionProperties.Builder.recordingLayout(), method SessionProperties.Builder.archiveMode() to SessionProperties.Builder.recordingMode()recordingLayout property in SessionProperties has changed to defaultRecordingLayout. This means that if one Session is gonna be recorded more than once, each recording layout may be customize with recordingLayout property (of RecordingProperties interface, which will overwrite the default one globally configured in SessionProperties object. REST API
Archive entities are now called Recording in API REST. For example: {"archiveMode": "ARCHIVE_MODE", "archiveLayout": "ARCHIVE_LAYOUT", "mediaMode": "MEDIA_MODE"} now is {"recordingMode": "RECORDING_MODE", "recordingLayout": "RECORDING_LAYOUT", "mediaMode": "MEDIA_MODE"}.recordingLayout is now called defaultRecordingLayout in operation POST /api/sessions. This means that if one Session is gonna be recorded more than once, each recording layout may be customize adding a new field recordingLayout in the call to POST /api/recordings/start of the API REST, which will overwrite the default one globally configured during POST /api/sessions Other breaking changes
8443 to 4443openvidu.recording.free-access is now openvidu.recording.public-access| Artifact | Type | Compatible version | Link | Info |
|---|---|---|---|---|
| openvidu-browser | NPM package | 1.9.0-beta-1 | NPM | |
| JS file | 1.9.0-beta-1 | GitHub | ||
| openvidu-server | JAR | 1.9.0-beta-1 | GitHub | |
| Docker container | 1.9.0-beta-1 | DockerHub | ||
| Docker container (+KMS) | 1.9.0-beta-1 | DockerHub | ||
| openvidu-java-client | MVN package | 1.8.0 | MVN Repository | |
| openvidu-node-client | NPM package | 1.8.0 | NPM |
# In first command: xenial for Ubuntu 16.04, trusty for Ubuntu 14.04
sudo echo "deb http://ubuntu.openvidu.io/6.7.0 xenial kms6" | sudo tee /etc/apt/sources.list.d/kurento.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 5AFA7A83
sudo apt-get update
sudo apt-get -y dist-upgrade
sudo apt-get -y install kurento-media-server
sudo apt-get -y install openh264-gst-plugins-bad-1.5
To start and stop KMS 6.7.0:
sudo service kurento-media-server start
sudo service kurento-media-server stop