If you are visiting this blog, hope that you are already familiar with WebRTC. This would be more in to the use cases of WebRTC. Especially our experience with open source WebRTC libraries and tools. We’ll discuss about setting up, bringing them to production, pros and cons.

This guide would be useful if you are,

  1. Not willing to use proprietary libraries or third party APIs for your WebRTC application
  2. Want to build your own WebRTC infrastructure
  3. Heavily consuming cloud infrastructure

Meetrix.IO provides professional services for webRTC. If you are looking for a service regarding any of the following libraries, please shoot an email to hello@meetrix.io

Use Cases

These are some use cases that we have experienced with and this guide is mainly written with that experience.

  1. Online Tutoring
  2. Online Interviewing
  3. Video Conferencing with SIP integration
  4. Tele-Medicine
  5. Remote Expert Support
  6. Real-Time Object Recognition

Comparison

Here is the list of the tools and libraries that we are going to discuss and a comparison about their features.

  Mode Web UI Mobile APP JS Library Mobile SDK Serverside Recording Horizontal Scalability
Jitsi SFU yes yes yes yes yes yes
Janus SFU x x yes yes yes x
Kurento SFU/MCU yes yes yes yes yes x
Medooze SFU/MCU x x yes yes yes x

Jitsi

Jitsi is a mature, open-source and complete web-based conferencing system. Jitsi consists with Jitsi Video Bridge (JVB), Jitsi Conference Focus(Jicofo) and Prosody as default XMPP signaling and message passing component. Backend is written in Java and the front-end is written in react. Jitsi also has native apps built with react-bative and high level SDKs for Android and IOS. Jitsi Video Bridge (JVB) which is a Selective Forwarding Unit (SFU), is the media server component and the core of Jitsi Meet.

You can easily setup a demo Jitsi Meet on AWS even with a t2 micro instance (with 1Gig Memory and 1 VCPU).

Considering the built in UI, horizontal scalability and the amazing community behind Jitsi, if you are looking for an out of the box video conferencing solution, Jitsi is the way to go. If you want to build a custom video conferencing solution using Jitsi, that can be achieved using lib-jitsi-meet low level JavaScript library or using Jitsi Videobridge API. But if you are planing to customize a lot, you might want to consider other solutions as well.

Kurento

Kurento is one of the popular and well-designed media servers that can be configured either as an MCU or SFU. Although the project went silent after the Kurento Team has been acquired by Twilo, still it’s one of our favorites. Since MCU mixes up the video/audio streams of the participants to create a composite video stream (if you configure Kurento as an MCU), you have to make sure you have enough computing power when the number of participants increases. When configured to act as an MCU, each participant will be uploading a single video stream, and will be receiving a single mixed video stream from Kurento Media Server. Despite of the CPU requirement, it has the advantage of low bandwidth consumption. Kurento Media Server is written in C++ and it exposes a control API. There are bunch of SDKs and samples apps built by Kurento Team for Java, , NodeJs and JavaScript. But some of these repositories are not well documented. One of the most interesting things with Kurento is it’s modular architecture. For example you can apply different filters and plugins (say OpenCV plugins) for video streams.

Updated:

Leave a Comment