At Kurento we strive to provide services for developers of advanced video applications for the Web and smartphone platforms. We found that a common use case is represented by multi-party group calls requiring a media server for advanced media processing.
This project introduces the Rooms API, designed for the development of conferencing applications whose centerpiece is the Kurento Media Server. The conference groups (rooms) will be managed using the API, which at the same time provides the means to interconnect the end-users through a Kurento Media Server instance.
The API’s core module, Room SDK, is a Java library for the server-side and has the main functionality of managing multi-conference sessions.
Additionally, we provide extra components that can be used when developing applications that follow the architecture depicted above:
- Room Server: a container-based implementation of the server, uses JSON-RPC over WebSockets for communications with the clients
- Room Client: a client library for Java web applications or Android clients (works with the Room Server only)
The core module defines a programming model for applications developed using the Java language. Some of the benefits from using this library:
- control over the lifecycle of a multimedia conference (room)
- access to typical operations required for managing the participants (join, exit, publish or receive media streams, etc.)
- simple media signaling, the application is required only to provide the media initialization and negotiation parameters received from the clients
- multimedia legs or service topologies are hidden by default (media elements like image filters can still be applied to a participant’s stream)
This component requires access to at least one instance of a Kurento Media Server for WebRTC media handling.
Developers can integrate this API directly into their application, but it’s important to understand that this library doesn’t possess, on its own, the ability to communicate with the clients. Further details can be found in the core API section.
Our server implementation, the Room Server, packs the functionality from the Room SDK with technologies such as Spring Boot and JSON-RPC over WebSockets. As such, it combines the client communications component and the core Room API, providing a fully-fledged Rooms server application. It can be easily integrated into other applications that use the Spring Boot framework.
Both client libraries are designed to be used in combination with the Room Server, as for signaling they use the JSON-RPC API exposed by our server component.
The Java client doesn’t deal with media handling but only defines a Java API over the JSON-RPC protocol supported by the Room Server.
At the moment, there is no iOS client available.
Please observe that the server’s WebSocket API has a limitation concerning an
user’s name, it can’t contain lower dashes (
Even though the core module is the Room SDK, developers are free to pick whatever component they need in order to build their application: some might need some minor modifications on the client side, whilst others would want to inject their logic on server side and might even have to modify the SDK.
For example, the demo shows how to integrate some of the provided components together with the client-side technology AngularJS and some small modifications of the server (adds a image filter for the video streams and a custom message type).
We provide a Quick start guide for the demo’s installation and execution.
There’s also a short Developer guide for applications based on this API.