With this problem of the pandemic, there has been a boom in the area of video conferences. Articles about webrtc, documentation of projects that allow users to communicate online have become a fairly popular target on the internet. Even i was hired recently to work on a telemedicine application that would allow patients to be attended online by their doctors.
For important projects where we talk about the WebRTC ecosystem, a Server-Side Solution is crucial for implementing robust applications that offer the client the possibility to record sessions on the server side. For example, with a server all the video streams go through it can be recorded and stored for any purpose, something that would be pretty difficult to do on a mesh architecture. Things like this are features that makes WebRTC a very important tool of another level, it allows a richer and innovative real-time interactions that can add a lot of value to your communication platform.
In this top, we will share with you the top 5 of most mature open source WebRTC media server implementations that you can implement by yourself on your servers to create your own video conferencing application.
5. Jitsi
Demo | Github | Technologies: Java, JavaScript
Jitsi Meet is an open-source (Apache) WebRTC JavaScript application that uses Jitsi Videobridge to provide high quality, secure and scalable video conferences. Jitsi Meet in action can be seen at here at the session #482 of the VoIP Users Conference. The Jitsi Meet client runs in your browser, without installing anything else on your computer. You can try it out at https://meet.jit.si.
Jitsi Meet allows very efficient collaboration. Users can stream their desktop or only some windows. It also supports shared document editing with Etherpad.
4. AntMedia
Github | Technologies: Java
Ant Media Server is a software that can stream live and VoD streams. It supports scalable, ultra low latency (0.5 seconds) adaptive streaming and records live videos in several formats like HLS, MP4, etc.
Here are the fundamental features of Ant Media Server:
- Ultra Low Latency Adaptive One to Many WebRTC Live Streaming in Enterprise Edition.
- Adaptive Bitrate for Live Streams (WebRTC, MP4, HLS) in Enterprise Edition.
- SFU in One to Many WebRTC Streams in Enterprise Edition.
- Live Stream Publishing with RTMP and WebRTC.
- WebRTC to RTMP Adapter.
- IP Camera Support.
- Recording Live Streams (MP4 and HLS).
- Restream to Social Media Simultaneously(Facebook and Youtube in Enterprise Edition).
- One-Time Token Control in Enterprise Edition.
- Object Detection in Enterprise Edition.
Ant Media Server has two versions. One of them is the Community Edition(Free) and the other one is Enterprise Edition. Community Edition is available to download on Github. Enterprise Edition can be purchased on antmedia.io
3. Kurento
Github | Technologies: C, C++
Kurento is an open source software project providing a platform suitable for creating modular applications with advanced real-time communication capabilities. Kurento is a WebRTC media server and a set of client APIs making simple the development of advanced video applications for WWW and smartphone platforms. Kurento Media Server features include group communications, transcoding, recording, mixing, broadcasting and routing of audiovisual flows.
As a differential feature, Kurento Media Server also provides advanced media processing capabilities involving computer vision, video indexing, augmented reality and speech analysis. Kurento modular architecture makes simple the integration of third party media processing algorithms (i.e. speech recognition, sentiment analysis, face recognition, etc.), which can be transparently used by application developers as the rest of Kurento built-in features.
2. MediaSoup
Demo | Github | Technologies: Node.js, C++, TypeScript
Instead of creating yet another opinionated server, mediasoup is a Node.js module which can be integrated into a larger application. Mediasoup and its client side libraries provide a super low level API. They are intended to enable different use cases and scenarios, without any constraint or assumption. Some of these use cases are:
- Group video chat applications.
- One-to-many (or few-to-many) broadcasting applications in real-time.
- RTP streaming.
mediasoup and its client side libraries are designed to accomplish with the following goals:
- Be a SFU (Selective Forwarding Unit).
- Support both WebRTC and plain RTP input and output.
- Be a Node.js module in server side.
- Be a tiny JavaScript and C++ libraries in client side.
- Be minimalist: just handle the media layer.
- Be signaling agnostic: do not mandate any signaling protocol.
- Be super low level API.
- Support all existing WebRTC endpoints.
- Enable integration with well known multimedia libraries/tools.
1. Janus WebRTC Server
Demo | Github | Technologies: C, C++, JavaScript
Janus is a WebRTC Server developed by Meetecho conceived to be a general purpose one. As such, it doesn't provide any functionality per se other than implementing the means to set up a WebRTC media communication with a browser, exchanging JSON messages with it, and relaying RTP/RTCP and messages between browsers and the server-side application logic they're attached to.
Any specific feature/application is provided by server side plugins, that browsers can then contact via Janus to take advantage of the functionality they provide. Example of such plugins can be implementations of applications like echo tests, conference bridges, media recorders, SIP gateways and the like. This version of the server is tailored for Linux systems, although it can be compiled for, and installed on, MacOS machines as well. Windows is not supported, but if that's a requirement, Janus is known to work in the "Windows Subsystem for Linux" on Windows 10: do NOT trust repos that provide .exe builds of Janus, they are not official and will not be supported.
Honorable mentions
Pion
Github | Technologies: Go
Pion is a pure Go implementation of the WebRTC API. Pion isn’t just about building software, but also educating people and furthering what we can build with WebRTC. Someday better software may come, but hopefully, their biggest impact will be creating innovation and fostering a great community. They have created WebRTC for the Curious and are documenting everything they have learned from building a WebRTC implementation from scratch. They want to pass on everything we learned, their long term goal is to see a WebRTC implementation in every language.
The library is in active development, please refer to the roadmap to track the major milestones. They also maintain a list of Big Ideas these are things we want to build but don't have a clear plan or the resources yet. If you are looking to get involved this is a great place to get started! We would also love to hear your ideas! Even if you can't implement it yourself, it could inspire others.
If you know about another awesome open source WebRTC media server project, please share it with the community in the comment box.