Open Source
Open source in WebRTC has a lot to offer. It has some very good media servers out there along with signalling servers and other necessary tooling to build a scalable production grade application. One need to know why and how much to use to build what kind of application as there is no general list to build a WebRTC application. Every business use case for a WebRTC application needs a different approach from feasibility, resource availability, scalability and timeline perspective. Below are a list of open source resources based on the implementation type of WebRTC, currently available based on their popularity and usability according to our experience of dealing with such resources.
WebRTC P2P
The simplest form of a WebRTC application is P2P audio/video calling app. There are a lot of use cases which can use a WebRTC P2P application to fulfill their business requirement. Some of them are
-
One to one teaching learning
-
One to one doctor patient consultation
-
One to one call center support
-
One to one video verification services
There are many other use cases as well which are evolving based on the needs of future.
The basic necessity to build a WebRTC P2P video calling application is a signalling server. There are other necessities as well to build a complete application which includes a application server and a front-end. As both of these are highly specific to the business use case, generally there are no open source libraries available which can completly satisfy ones requirement. More details about signalling server will be covered in the signalling server section below.
WebRTC P2P resources
If you are a developer and want to learn about how to build a WebRTC P2P call from scratch, below are the resources.
If you are a business owner looking for a fully featured production grade p2p video calling solution, below is the link to a fully featured demo p2p video calling app.
Application server in WebRTC
Application servers are highly specific to a business use case. They primarily are built by the in house tech while aligned to the business needs. The primary reason for building a application server for a WebRTC application includes Room management, call management and call log management. There can also be many other aspects to it which includes user authentication & authorization, user queue management, recording management etc.
WebRTC Application server resources
Technologies that can be used to build a scalable application server are as below.
Signalling server in WebRTC
WebRTC doesn't mandate a specific signalling mechanism that needs to be used to establish WebRTC calls. Therefore, it is completely on the development team to identify and use / develop from scratch, a signalling server which can also scale according to the business need. There are some signalling servers currently available as open source. But one need to be very careful while choosing a open source signalling server primarily from it's usefulness and freshness perspective, as it can make or break the app.
Usefulness means if the open source package aligns with your business interest or not. Freshness means if the open source package is active or not. If the open source package is not in active development in terms of PRs, bug reports, change requests then it is not a wise decision to use such a package.
WebRTC signalling server resources
Below are a list of open source signalling servers currently available primarily for building P2P video calling applications.
Media server in WebRTC
Media servers in WebRTC are needed when a multiparty video conferencing / one many broadcasting application is needed. Such an application is much more complex than a simple p2p video calling application. There are 2 kinds of media servers currently available. One is SFU and another is MCU. Both of these options have their unique strength and weaknesses. There is a 3rd option also which is a hybrid approach of both.
SFU:
-
It needs less compute power on the server side but consumes more network bandwidth and more processing capacity on the client side.
MCU:
-
MCU demands a lot more processing capacity on the server side but demands less network bandwidth and processing capacity on the client side.
WebRTC Media server resources
Below are a list of open source media servers currently available primarily for building large scale video conferencing / live streaming applications.
STUN / TURN server in WebRTC
The TURN Server is a VoIP media traffic NAT traversal server and gateway. It can be used as a general-purpose network traffic TURN server and gateway, too. If you are using any of the above mentioned options for building your video conferencing solution, you need a turn server in case you want to serve customers who are behind firewalls.
WebRTC STUN/TURN server resources
Below is a open source TURN server currently available primarily for connecting users who are behind a firewall.
Other tools in WebRTC
There are many other tools needed for fulfilling different kind of requirements. One of the important requirement in any WebRTC application is recording of WebRTC video conferences.
There can be 2 kind of possibilities. One is server side and another is client side recording. Server side recording is usually preferred from stability and scalability perspective.
Another important requirement is to post process the recorded videos. Post processing include separating the audio from video, merging more than one recorded video to one file, splitting one large video into smaller files etc.