Video chats are implemented in a great many applications. Facebook’s Messenger, WhatsApp, Skype, Google Hangouts, or Slack – they all have it. If you want to follow their steps and implement a video chat in your application, you might encounter some problems. Most of them are paid solutions that only use their provider’s servers. That’s why I created VideoChatGuru, an open-source solution accessible to anyone who wants to have a video chat in their app.
The Idea to Create VideoChatGuru
Quite recently, I got assigned a task of researching and validating available native Android solutions and libraries for video chat which could be helpful for our commercial projects. Having used some of those libraries before, I found the task was fairly easy. I had collected some info about other available solutions from fellow developers and started testing.
All of the solutions I found were paid and used only their provider’s servers. They all had one thing in common that I found while going through their source code or their websites – they all used WebRTC. I thought I’d heard about it somewhere, and I was pretty sure it was supposed to be a free and open standard.
So is it free and open? The answer is “YES”, and the binaries are available on the project’s website: https://webrtc.org/ .
I didn’t even notice when my research task turned into an internal project, which we later called Chat&Roll. The app was fairly simple: it allowed its users to have video chat with a random stranger who happened to use the same app, and everything was made using free and open solutions.
How VideoChatGuru, an open-source solution for video chats, was born
One of the main problems with WebRTC for Android was its lack of documentation. I had to look through the internal implementation in C++ many times to grasp some concepts. The API sometimes made me communicate with the native code by passing unknown and undocumented string flags, which I had to look for in the sources. But when I finally managed to get everything to work, I was amazed by the video quality that we were able to achieve. During the process of creating, improving, and cleaning up the app after many tests and experiments, I was gathering more and more class wrappers, utils, and helpers that simplified many concepts. One day, we thought that it would be nice to share them with the community, and that’s how VideoChatGuru was born!
What are the benefits of VideoChatGuru?
VideoChatGuru is an open-source solution written entirely in Kotlin, based on a WebRTC implementation. It’s not bound with any service, and you are free to choose whether you are going to use an established service provider or host your own. VideoChatGuru prioritises peer-to-peer connections, thanks to which we reduce delays to a minimum.
VideoChatGuru wraps the WebRTC API, providing a friendlier access to its features that you are going to need for implementing video chats. We also provide our Chat&Roll example implementation, so that you can see VideoChatGuru in action. Thanks to the fact that we used Firebase for signalling, it should be much easier to learn and understand how webRTC signalling works by observing it unfold live.
Where can you use VideoChatGuru and what can you build with it?
You can use it only on Android to build all kinds of video chats. That said, you are not restricted to only calling Android devices, because WebRTC is available also on web and iOS.
What will you need?
To make WebRTC work, you will need to provide a way for two devices to exchange a handshake – in our example, we use Firebase for this purpose. WebRTC also uses STUN and TURN servers, which you will need to provide: you can host your own server (you could use coturn) or use external service providers.
We are looking for your feedback! Feel free to open new issues on github and suggest new features or API changes. If you need some help with implementation VideoChatGuru in your app, drop us a message.