Video support in Convos v4.08

23. May, 2020

Convos v4.08 is fresh from the bakery, and this time we are proud to announce video support!

How do I enable video support in Convos?

If you are just testing out Convos, you won't see any button to start the video chat. The reason for this is that the underlying technology require a secure connection, a STUN server and optionally a TURN server.

A secure connection

WebRTC will (probably) not function properly if you connect to Convos without a secure connection. SSL certificates can either be bought or set up for free with Let's Encrypt. If you expose Convos directly on the internet you can specify the certificates from the command line:

./script/convos daemon --listen "https://*:8443?cert=./server.crt&key=./server.key"

Keep in mind that the STUN and TURN server also require secure connections.

STUN server

The absolute minimum to enable video support is a STUN server. This server is needed for clients to exchange basic information for how to reach each other.

To start Convos with a given STUN server, you need to specify the CONVOS_STUN environment variable. Example:

CONVOS_STUN=stun://stun.services.mozilla.com:3478 ./script/convos daemon

A STUN server does not require much bandwidth, so there are many free alternatives to choose from. If you want to set up your own server then Coturn is a solid project to try out.

TURN server

A TURN server might be needed some cases where the network between the two clients is "complicated". The two clients will in that case send the video and audio streams to the TURN server, instead of using peer-to-peer connections.

To start Convos with a given TURN server, you need to specify the CONVOS_TURN environment variable. Example:

CONVOS_TURN=turn://superwoman:[email protected]:3478

There are (to my knowledge) no free alternatives for this, so you have to set up your own server for this. The Coturn server also supports TURN, so you only need one external server to get a video connection for all cases.

How do I start a video chat?

Once you have started Convos with the CONVOS_STUN environment variable, you can go to any conversation and there should be a video camera symbol on the right side of the conversation name.

Picture of video button

Clicking on the video button will notify the other user(s) in the conversation that you are ready to video chat. Any other user can then join and you will then see and hear each other.

Who can I video chat with?

The signalling protocol use IRC to send the WebRTC signals. The signalling protocol is however specific for Convos, so you can only video chat with other people who have the same Convos version as yourself.

Why is video support currently experimental?

There are several reasons why video support is currently marked as experimental:

What is next?

We hope to stabilize video support in Convos v5.00. It might sound like that that is way into the future, but in reality Convos will jump from 4.xx to 5.00 once video support seems to work properly.

Want to help? Give us feedback either in #convos on freeenode.net or on GitHub.