Raise your hand those of you, who knows, at least, one business that doesn’t use video conferencing in their daily work? Since proper communication is critical, businesses use various messengers like Skype, Google Hangout, etc. And at some point a company would find out that those options aren’t sufficient; and they need more robust, customized solution tailored to their specific needs.
This article is a high level picture of how to build a customized video conferencing application. We will describe popular components and services that are being used in modern video conferencing applications.
What is WebRTC and what’s the point of using it
WebRTC is an open source technology released by Google back in 2011. The main intent of WebRTC is to provide real-time, secure voice and video communication, right in browser, without Flash player or any other 3-rd party plugins. It’s underlying protocols work across majority of devices, allowing to produce cost efficient solutions.
The main benefits of WebRTC are:
WebRTC browsers and devices support
No third party plugins downloads. As for today most desktop browsers are able to provide WebRTC interface for engineers. Web developers can easily write video conference applications with Javascript. Mobile apps developers, on the other hand, are using specific libraries to add WebRTC support.
Video and audio quality
Users are able to broadcast high quality video and audio from webcam, ip-camera or other sources. WebRTC provides a good set of options to control video quality in real time.
Security
SRTP SSL security can be used during voice and video data transfer. Clients use end to end encryption which is relevant for example, for public WiFi networks.
Adaptation to network connectivity
Huge advantage of WebRTC is built-in adaptive bitrate streaming. WebRTC delivers stream regardless the status of networking condition. Users with slow internet connection would still receive real time media stream with reduced quality.
No licensing
All formats being used in WebRTC are open, well documented and free.
WebRTC related Infrastructure
Signalling server
Signalling server is tol be used to help WebRTC capable clients to connect with each other and ensure clients agree on compatible codecs, that would be used for both stream sender and receiver. Websocket is usually selected as communication protocol between a client and signalling server. Technologies, like Java, Scala or NodeJS are proper toolkits to handle signalling requirements.
Besides signalling we often would need setup addition TURN and STUN servers, to ensure, that user in corporate networks could access our services.
Note, that video broadcasting web sites must be accessible with HTTPS protocol. Otherwise access to user camera or microphone will be prohibited. We recommend to look at Lets Encrypt as a provider of free HTTPS certificates both for development and production.
Stream server relay
Small groups can communicate via basic WebRTC video chat. Google Hangout is a good example of such implementation. However, serving wide audience would require additional server power, called WebRTC Relay. It would unload a broadcaster client from extra traffic and serve as a mediator for transferring RTS or SRTS streams to end users. For example, you could check our short tutorial how to create many to many video conference with Kurento and Scala.
Let’s quickly check what are some relay options in the market.
- Kurento – is a kind of a media server framework. It is open source, while recently Twilio has acquired it. With Kurento you can essentially build whatever you want when it comes to backend media processing: SFU, MCU, recording, transcoding, gateway, etc.
- Jitsi Videobridge – is an SFU. It is an open source one, currently owned and maintained by Atlassian. It includes signaling component implemented as XMPP. HipChat Video is using Jitsi.
- Commercial Red5Pro is a successor of Red5 RTMP streaming server, that claims supporting wide range of protocols.
- Commercial Wowza also works hard on supporting WebRTC and currently only Preview version is available.
Besides core relay functionality, each solution provides extra features. Kurento has many attractive features, such as recording, real time stream transformation and even merging several streams into a single one. Finally, streaming servers could be enhanced by adding image recognition modules, like OpenCV, to recognize figures and faces in video steam. There’s also an option of adding in a phone call into a video conference.
Top 5 features for video conferencing application
Video conferencing applications usually support the following functionalities:
- Video broadcasting
- Screen Sharing
- Meeting Recording
- Mobile application
- Analytics
Video Broadcasting
Usually users broadcast from webcams and smartphones. Video broadcasting could be addressed to one single user or to wide audience. Video itself could be of HD or regular quality. And in some cases video is being watermarked before broadcasting.
Screen Sharing
Screen sharing is a must-have feature for majority of video conferencing applications. And the great thing is that desktop browsers provide screen access via API. Chrome for example allows sharing selected screen or window. That’s a huge step forward to provide best UX for users. When it is necessary, a screen presenter could turn its screen into a whiteboard and do the highlighting. Advanced webinar platform could go even further and allow another viewer to remotely control mouse pointer on screen owner.
Meeting Recording
Often users can’t allocate time to participate in the video conference, and it’s very handy, when the platform allows them to watch it later. Yes, it’s possible to record everything and upload to Youtube. However, advanced technologies are now able to further enrich user experience to a point when a client would think that he is watching a real-time webinar, not a pre-recorded copy.
Let me describe how it works. Video is being saved by media server, and all users interactions including chat and other activities are saved as separate events in the database. Later the platform could recreate those events one by one, delivering the same experience. If you are a webinar host, you could later run that replay hybrid conference and communicate in real-time with your new user group. It feels like taking part in a live webinar for users, and saves time and efforts for the host.
Mobile apps
There are two options to develop mobile applications for video conferences. First one is to use cross platform framework, second one is to build native app. Mobile developers could benefit using Ionic framework to publish app with single codebase to both iOS and Android. Ionic is based on chromium component, it means WebRTC support is built in like in desktop browser.
And native app developers would produce apps which involves natural menus and better performance. You can check for WebRTC library for mobile.
Analytics
It is crucial for modern business to leverage received data into decisions about product modification. Both conference platform owners and webinar presenters should be able to access detailed meeting statistical information. Having a list of attendees and post webinar data, should help us understand who did what, when and how; to see who got registered, who joined live webinar, what percentage of users fully watched presentation, etc.
Conferencing platform should become a powerful tool to reach the audience: registration, analytics, mailing campaign. Data analysis helps companies to make the most of their live activities.
Use cases
Here are typical examples of products that could be built with WebRTC and accompanying technologies described above:
- Video conferencing platforms for webinars. Online education trend is growing, same as modern e-learning systems, and online collaboration is one of the most important tools.
- Delivering video for simple, on demand playback
- One to one customer support chat.
- Live streaming video-platforms like Twitch.tv.
Would you like to understand how your specific application would benefit from WebRTC? Drop us a line and we would gladly recommend the most suitable solution.