Most WebRTC implementations require some kind of recording these days, but they are often cumbersome and implementing them is complex. Some even involve docker containers with X-servers running inside capturing a chrome window. Given their implementation complexity, it’s even harder to debug them, so is there an alternative to this tedious process?
Enter Kurento Media Server.
Kurento is an open-source media server, it has video transcoding and recording capabilities built-in it has been in development for quite some time now, so how can we achieve recording with Kurento?
Kurento Media Server has ‘RecorderEndpoints’ to which we can redirect the media that comes out of the peer’s browser and save it in many different formats on the server, because all streams go through Kurento individually, we have the flexibility of recording each stream separately. In turn, this flexibility allows us to arrange the resulting videos as we wish and helps us not to loose any detail of the interaction, which is very important when talking about archiving purposes. This setup has a very simple flow.
How We Implemented Kurento Recording
We wanted to simplify the process as much as possible. We used a docker image which contains kurento and takes in parameters to configure STUN/TURN servers. This adds modularity to our setup, with a simple environment variable change, you can change from one STUN/TURN server to another.
To demonstrate how it works, we created a demo which takes a one-to-one video-chat and records the client’s streams individually, then outputs them into the server.
All in all, Kurento solves many of the common problems found when trying to implement archiving to a video-chat or video-conference solution by providing a simple interface for our developers to work with and a straightforward setup and configuration process.
See for Yourself
In order to see the source of this project and run an instance in your machine, you can check this github repository and follow this instructions.
Step #1 – Clone and get the environment ready.
https://gist.github.com/deviantfero/ed43d9591e0ad4e9eaa85c88925e17ec
Step #2 – Enter your credentials where needed.
Modify ./static/js/common.js so it contains your STUN/TURN credentials instead of mock data.
https://gist.github.com/deviantfero/33aef7ee70ecfdedd71f54a62aa49e8c
Step #3 – Setup your Kurento instance (optional if you already have one)
install Docker if you don’t have installed, then run the following command.
https://gist.github.com/deviantfero/d02a2a19b4e01e9ba39f76ff6f05d7f9
Step #4 – Run the demo
On the project root directory run the following commands:
https://gist.github.com/deviantfero/a4808c49168c91010f07a01716f06ae0
After this you can go to http://localhost:3000/one-to-one/{your-session-here} to join a session with a peer, your resulting videos should be in your /tmp folder if you used our docker-compose.yml, else they will be on /tmp wherever Kurento Media Server is running.
To learn more about TURN/STUN setup, check out our Quick Guide for STUN/TURN.
Want to discuss more about implementing archiving solutions for your communications platform? We have a great, experienced team, and we’ll be happy to help you out on your endeavors, Contact us today!