This new release of Kurento is following the previously set path of focusing in stability and fixing bugs. Some critical issues have been solved, related to high CPU usage on real-world deployments that were supporting lots of users, so don't hesitate to update your media servers!
To install Kurento Media Server: Installation Guide.
These Release Notes were originally published here.
- Deleted inline WebSocket++ sources.
WebSocket++ (websocketpp) is the library that provides WebSocket support for Kurento Media Server. Up until now, the whole source code of this library was included in the Kurento Media Server source tree, but it wasn't being updated accordingly to the new developments of other dependent libraries, such as newer versions of OpenSSL. This was causing build issues for some users, so starting from Kurento 6.14.0, we've deleted all websocketpp source code from our tree, and instead will be depending on the websocketpp packages that are provided by the Operating System itself (Ubuntu package libwebsocketpp-dev).
The change doesn't affect client applications of Kurento, but it will be good news for people who were building KMS from sources.
- Reduced default log levels for WebRTC-related modules.
Some basic operations, such as SDP Offer/Answer negotiations, ended up logging thousands of lines that don't really convey anything useful in a typical deployment, and can make it harder to find other more interesting messages. For this reason, the bulk of general messages that are part of WebRTC have been modified from
DEBUGlog level (see Debug Logging).
- Locked 100% CPU when releasing multiple Endpoints.
This issue was affecting a good number of installations. There was a severe performance penalty in the disconnection process between Endpoints, so in scenarios with a lot of connections, there was a good probability that the CPU got locked in a permanent 100% CPU usage loop.
An example of this would be one-to-many scenarios (1:N), were a single presenter would be sending video to some hundredth consumers. When the producer disconnected their WebRtcEndpoint, trying to disconnect so many consumers would almost always trigger the issue.
Here, the first graph clearly shows the CPU lock issue in action, while the lower one shows how resources are appropriately released and the CPU can now come back to idle levels after a lot of users disconnect at the same time:
More info can be found in the related Pull Request: Workerpool rewrite.
- Fix recording of AAC audio with MKV.
The MKV profile uses AAC audio, but due to wrong settings it was actually not working. The Agnosticbin component in Kurento would get confused and fail to find an acceptable encoder to perform the audio transcoding, and the recording would end up not working with an infinite stream of
There were other changes and fixes contributed by users, who merit our sincere appreciation and thanks for sharing their work with the Kurento project:
- @alexnum (Alessandro) for Kurento/doc-kurento#4 (Handling self-signed certificates in nodeJs).
- @piyushwadhwani for Kurento/doc-kurento#5 (adapting to newer version of spring boot).
- @hgcummings (Harry Cummings) for Kurento/kurento-tutorial-java#14 (Increase max text message buffer size for websocket connections).
- @simoebenhida (Mohamed Benhida) for Kurento/kurento-utils-js#30 (Refactor deprecated syntax), and @oscar-mnfuentes for Kurento/kurento-utils-js#32 (Fix promise call in setDescription to make compatible with safari).