Kurento is an ambitious project having the objective of creating a new generation of WebRTC media servers going beyond current state-of-the-art. Providing capabilities such as group communications, transcoding or recording for WebRTC media streams in challenging. Most initiatives out there working on WebRTC media servers are investing huge efforts for having everything up and running. Kurento has extended the defiance to make possible arbitrary media stream processing. As you may know, Kurento is quite a new project and we have needed several months and the feedback of many people for being able to understand how things should be organized for being able to expose all the capabilities we want with the APIs we like. When one creates something radically new, it is necessary to deal with problems nobody has solved before and pivoting becomes a necessity.
We want to sincerely thank all Kurento early adopters who have suffered instabilities, lack of up-to-date documentation and roadmap uncertainties. Today we have some good news to announce. The Kurento team believes we have come to an architecture which satisfies the requirements we had planned since the beginning of the project. It’s been several months of hard work refactoring Kurento Media Server, the APIs and creating a new documentation. It was worthy: today Kurento V5 has come to life.
Kurento V5 is an evolution introducing many changes that we believe will be helpful for developers and will simplify installation, configuration and usage. If you are already using Kurento V4, you will find the following modifications
Kurento Media Server (KMS)
- KMS V5 comes with built-in WebSocket support. Thrift connectivity has been eliminated and, with it, lots of configuration and NAT traversal problems. Thirft removal also makes Kurento Media Connector (KMC) to be no longer mandatory for running a KMS instance.
- KMS V5 provides a fully modular architecture. All media elements are modules plugged into the media server dynamically. This makes possible for anyone to extend KMS capabilities with new additional filters. If you have a specific video or audio processing algorithm and you want to integrate it into Kurento, you’ll find it can be done in a simple and seamless manner.
- KMS V5 provides improved WebRTC quality with novel techniques for the management of RTCP feedback packets including NACKs, PLIs, and FIRs.
Kurento Media Framework (KMF) and Kurento Web SDK (KWS)
- Kurento V4 KMF disappears. We have found KMF to be too heavy and the Content API not to be suitable for most use cases. We have evolved our architecture to concentrate on exposing a simple and seamless API suitable for controlling KMS capabilities from Java and JavaScript applications. For this reason, Kurento V5 doesn’t provide any specific signaling protocol. We let developers use the signaling protocol of their choice.
-
Kurento V5 introduces the concept of Kurento Clients. A Kurento Client is just a library making possible to access KMS V5 capabilities from a program written in a specific programming language. Nowadays, we have two Kurento Clients
- kurento-client-js. This can be used both in browser and in Node.js applications for accessing KMS capabilities. Kurento V4 kws-media-api has been replaced by this client.
- kurento-client-java. This may be used from any Java program Java EE application servers, Android clients, Java SE desktop clients, etc. Kurento V4 kmf-media-api has been replaced by this client.
- Kurento Client code is self-generated by the platform from a simple IDL language introduced in Kurento V5. Additional kurento-client-* packages could be created for other languages such as Python, C# or Ruby, however this is not our short term roadmap.
Kurento Media API
- Kurento Media API has been renamed to just Kurento API. Kurento Clients are just implementations of the Kurento API on different programming languages and platforms. At Kurento, we’ll concentrate in creating a media server letting the signaling for the application developer. Hence, KMS V5 exposes only one API and this is why we have decided to eliminate unnecessary surnames.
Documentation
-
A completely new documentation has been created. It provides basic information to Kurento newbies making possible to take a first contact with the technology through simple tutorials. We provide tutorials in three flavours
- Java tutorials
- Node.js JavaScript tutorials
- Browser JavaScript tutorials
- Documentation also provides advanced information for developers interested in mastering Kurento and on extracting all the power from the platform.
We hope all these modifications will enhance the experience of Kurento adopters and will help to generate a richer ecosystem of users, contributors and supporters. If you have questions about Kurento V5 enhancements or about our future roadmap drop us a line through the Kurento public mailing list or through Twitter. We’ll happy to have your feedback.