In our earlier posts about the Together and Maloya releases of Jami we mentioned our work on improving Jami's video conferencing platform. There have been even more changes to the video conferencing platform system then, including new features and bug fixes, with a lot more yet to come. So, let's take a tour of these features and what's next for Jami.
Different roles in conferences
In a Jami video conference, there are three different roles:
Host(s) of the conference. Since Jami doesn't rely on external services or machines, at least one participant has to do the mixing/combining of the video feeds for everyone, with a goal of minimizing the bandwidth usage for as many participants as possible.
Moderators have the power to mute/unmute participants, change the conference video layout, promote others to moderators, and kick participants from the conference. These moderation tools can be accessed by hovering the mouse pointer on each participant's video, as seen in the screenshot below.
Conference settings and customizations
An important feature introduced in "Together" is the "Rendezvous" mode. A rendezvous is a Jami account that combines all incoming calls together into a rendezvous/conference. This feature was introduced to avoid having to manually add every participant to the conference each time. This means that someone can hold a rendezvous on an account (let's say "my-rdv"), then every peer calling "my-rdv" would automatically join this call. Every Jami account can be turned into a rendezvous account and vice-versa via the setting "Convert your account into a rendezvous point".
Note that a rendezvous account does not need any camera or capture device. So even an old computer can be recycled into a rendezvous point for smaller meetings. Thanks in part to the various APIs of Jami, it is also possible to use Jami in a 'headless' server setting with only the daemon part of Jami running, and accepting and handling rendezvous accounts and calls.
In the account settings, we offer several settings to manage the default moderators for your conferences:
"Make all participants moderators", which is on by default, makes every participant in the conference a moderator. This is enabled by default, since we believe most users use Jami with their family, friends, or colleagues, where a hierarchy is not needed. However, for classrooms or other scenarios where hierarchical access may be desired, this setting can be disabled.
"Enable local moderators" adds all accounts locally available on your device as moderators.
"Default moderators", allows designating other Jami accounts as moderators for the conferences held by your account.
One of the increasingly more popular features in video conferencing platforms during the past year has been the "raise hand" feature. A participant would "raise their hand" to indicate to the current speaker/presenter that they would like to speak, and this helps one do so without suddenly interrupting the person currently speaking. This is particularly useful in classroom settings and generally larger group meetings where several participants may happen to want to speak simultaneously.
As such, we recently implemented "raise hand" for Jami to cover these important use-cases, and help participants and hosts/moderators better coordinate and communicate in meetings. Each participant can raise or lower their hand by clicking on the hand icon in the bottom right area of screen in video calls.
Muting participants is an important feature in all the conferences and because you can be interrupted by a private call both the participant and the moderator must be able to control the microphone (to avoid ambient noise for others, private conversations, etc.). This is why we have two levels of muting in Jami. Participants can mute their own microphone, and moderators can also mute participants. However, if a participant mutes their microphone, the moderator will not be able to unmute them, and if a moderator mutes a participant then they will not be able to unmute themselves either.
Protecting your calls
Finally, a question that has come up a lot is: how I can protect my rendezvous from unwanted contacts? In Jami, we do not rely much on passwords but rather on certificate chains and verifying them. So, in the account settings you will find "Allow incoming calls from unknown contacts" to avoid non-contacts in your calls.
Hardware requirements for hosting a conference
Benchmarking the system requirements for hosting a conference can be hard, as this depends on a lot of factors. In fact, hosting a video conference needs good bandwidth and a computer capable of performing the video mixing. However, for instance the required resources will be vastly different between a conference with many people with their video on, and another conference with only one or two people sharing their screen/video and the other participants watching with their videos turned off.
However, for the "worst case scenario" where every participant is sharing video and audio, we recently did a test with 40 participants, with the following hardware specifications for the host's machine:
- Intel(R) Core(TM) i7-7700K CPU @ 4.20 GHz (used at ~60%)
- 32 GB RAM (3.06 GB used)
- 92 Mbit/s
Other participants were many android devices or desktop computers from various networks, with different connection speeds. For now, for the best experience we don't recommend more than 25 video/audio participants at a time; and for the host would need ~2 Mbit/s per participant (1 up, 1 down) for bandwidth usage.
As mentioned in the beginning of this post, a lot is coming in the future of Jami. Here is a quick overview of upcoming features:
Answering in audio only to a video call, and sharing the screen while sharing the camera in a video call are features generally requested by users. We recently merged a considerable amount of code for implementing these into the daemon part of Jami, and have been testing and improving it since.
Push to talk
In the recent months we were mostly focused on improving echo cancellation on Windows, by adding support for the WebRTC echo canceller. Now that this is done, we plan on improving the audio managing systems with features such as push to talk.
Participant video layouts
For the time being, while it's possible to have multiple hosts in a conference, doing so would result in suboptimal video layouts, even though the Jami client applications have enough information to correctly render the participants in a call. Also, the layout is not optimal if rendered the same way on a mobile or a desktop. In the future, we want to improve upon this, as well as on splitting the video to improve the rendering in the Jami client applications.