How to video conference in high-quality stereo using Jitsi Meet

Ross M Purves, 03.10.20

Abstract

High quality stereo playback is important when teaching or performing music via video conferencing. Jitsi Meet is a free, open source video conferencing tool which can be set up to facilitate the sending of high-quality audio in stereo. Unfortunately, Jitsi lacks the means of enabling these features from the standard web-based user interface. Instead, the initiator of a video call must append a series of configuration options to the Jitsi server address and room name as a ‘query string’. This technical note has been drafted in the hope that it might support musicians and teachers wishing to take advantage of these features of Jitsi. It is important to note that stereo sound using the steps outlined will only work with Firefox used on both the transmitting and receiving machines. This document is a work in progress and comments and corrections are welcome.

Introduction

High quality stereo playback is pretty important when teaching or performing music via video conferencing. It is therefore unfortunate that, by default, most common video conferencing/online classroom tools feature mono audio, heavily processed to prioritise clearer speech at the expense of high-quality music reproduction. Some commercial systems e.g. Zoom can be configured to improve on this situation.

However, Jitsi Meet is a free, open source video conferencing tool which can also be set up to facilitate the sending of audio in stereo. Further advantages of Jitsi include full encryption, no requirement for users to set up accounts and no time limits on conferencing sessions. Although Jitsi Meet can be downloaded for free and installed by anyone who has the technical knowledge and access to an appropriate server, it can also be accessed freely via https://meet.jit.si/. The following notes assume the use of this public Jitsi server, but could probably easily be adapted to a self-hosted installation.

The Jitsi suite of technologies has featured in a range of research studies into online learning (e.g. Hamilton et al, 2018; Andujar et al, 2020). It also recently received a positive review for its potential as an online music teaching tool during the pandemic lockdown (Mariska et al, 2020).

Jitsi supports high-quality, stereo audio but lacks the means of enabling these features from the standard web-based user interface. Instead, the initiator of a video call must append a series of configuration options to the Jitsi server address and room name as a ‘query string’. Unfortunately, comprehensive documentation regarding these features is not easy to find and users are also liable to fall foul of bugs related to some browsers’ implementation of streaming audio protocols.

This technical note has been drafted in the hope that it might support musicians and teachers wishing to take advantage of a free, open source video conferencing/streaming in their practice. Technical details are taken mainly from Jitsi’s sourcecode and from the many disparate forum posts discussing these issues. The latter confirm that there is an appetite for an open source, freely-accessible, registration-free video conferencing tool for sharing music in high quality stereo.

The most important thing to acknowledge straightaway is that stereo sound using the steps outlined below will only work with Firefox used on both the transmitting and receiving machines. No other browser will play back in stereo, nor will the Android or iOS Jitsi Apps. The reasons for this are touched on below.

Important: This is a first draft and much remains speculative - comments, corrections and further information are all most welcome. Please send these to r.purves@ucl.ac.uk.

URL arguments

The person instigating the Jitsi video conference should use the following URL query string to enable stereo audio.

https://meet.jit.si/ROOMNAMEHERE#config.disableAP=true&config.disableAEC=true&config.disableNS=true&config.disableAGC=true&config.disableHPF=true&config.stereo=true&config.enableLipSync=false&config.p2p.enabled=false&config.prejoinPageEnabled=false

Replace ROOMNAMEHERE with your selected room name for Jitsi.

Other people joining the stream do not have to use the full URL. They only need to use this part:

https://meet.jit.si/ROOMNAMEHERE

Important: the instigator must join the room first, i.e. before all others using the simpler form of the URL. If anyone else not using these URL arguments gets there first, the normal Jitsi defaults will persist and stereo play back will not be possible.

Getting stereo audio into Firefox

On Windows, stereo audio can be fed into Firefox using a virtual mixer/loop back utility such as VoiceMeeter. On Linux, the loop back functionality within Pulse Audio can be used. SoundFlower is a similar tool that should work on Macs, although this has not been tested. The output of the loop back or virtual mixer device should be selected as the audio input within the Jitsi web interface in Firefox.

Alternatively, tests suggest that a stereo microphone will also work directly with Jitsi, via Firefox. Successful tests have been undertaken a Zoom H1 portable digital audio recorder configured in USB stereo microphone mode and also a Microsoft Surface 3, which has a stereo microphone installed.

Other Important Caveats

 

Why does this only work with Firefox?

As noted, Firefox must be used on the transmitting and all receiving machines. Even if you configure Jitsi with all the URL parameters listed above, other browsers appear to sum audio to mono. Tests suggest that Firefox on Windows, Macs, Linux, Android, and IOS will all work fine. This feels like a considerable limitation in some ways (particularly if someone is using a corporate machine where they can’t simply install another browser). But on the other hand, it’s no more of an impediment that having to install clients for Zoom, Teams or Skype for other kinds of video conferencing.

Jitsi Meet uses the WebRTC protocol via the Opus codec. At present it seems that Firefox is able to make use of Opus in stereo but other browsers may not be able to do so. Issues have been raised about this with regards to some other browsers (e.g. see here for a bug ticket   for Chromium). Moreover, Jitsi does not support either Internet Explorer or Microsoft Edge, although some test users said they were able to connect to the stream using Edge on some Windows 10 computers (but heard the audio in mono all the same).

 

What do all the URL arguments mean?

As outlined above, there is no way to enable stereo from within Jitsi’s web interface. Instead, a series of arguments must be added to the end of the normal meet.jit.si server room name. These must start with # and then each argument is separated by &. It is possible there is some redundancy here. Further checks are needed to establish if any of the following can be dropped from the working URL argument string.

URL argument

Description from Jitsi source code

Notes

config.disableAP=true

Disables all audio processing

It seems that this acts as a ‘master switch’ to disable automatic gain control, noise suppression, echo cancellation and the highpass filter.  If so, then there is potentially some redundancy within the URL arguments – something which needs further testing.

config.disableAEC=true

Disables Acoustic Echo Cancellation

Various reports on web forums suggest that these have variable impact on overall sound quality. A number of people report that they leave some of these options enabled to support the needs of their users. Thus one may still wish to selectively enable and disable these instead of using the ‘disableAP’ master switch above.

config.disableNS=true

Disables Noise Suppression

config.disableAGC=true

Disables Automatic Gain Control

config.disableHPF=true

Disables Highpass Filter

config.p2p.enabled=false

 

In peer to peer mode, two participants connect directly to each other, reducing load on the server. Setting this to ‘false’ forces the stream to be routed via the Jitsi Video Bridge on the Server. This is necessary for stereo streaming as peer-to-peer mode relies on browsers’ default (i.e. mono) audio settings.

config.stereo=true

 

Using this option may also have the secondary effect of increasing the overall audio bitrate to around 70kbps according to this post.  Obviously this is highly beneficial for higher quality music playback.

config.enableLipSync: false

Disables the lipsync feature.

“Currently works only in Chrome and is disabled by default.”

config.prejoinPageEnabled=false

 

A recent addition to the necessary arguments to active stereo, it seems. This disables the newly introduced ‘Pre Join Page’ on the meeting host’s connection. For some reason, this new page appears to break the stereo facility if it is left enabled.

What’s still to be tested

 

References

Andujar, A. & Rodriguez, J.M.F (2020). ‘WhatsApp and Jitsi to Foster Student Engagement in an American-Spanish Telecollaboration Exchange’, in Andujar, A. (ed), Recent Tools for Computer- and Mobile-Assisted Foreign Language Learning. IGI Global, 60-78.

Hamilton, W. A. et al. (2018). ‘Collaborative Live Media Curation: Shared Context for Participation in Online Learning’. In Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems (CHI '18). Association for Computing Machinery, New York, NY, USA, Paper 555, 1–14.

Mariska, B, Agster, S, Holmes, E & Stodola, H (2020). Comparing & Contrasting FREE Platforms and Procedures for Online Music Instruction: Skype, Zoom, Hangouts Meet, WhereBy, Facetime, Jitsi, etc

 

Acknowledgements

Thanks to all the individuals who helped me test different browsers and operating systems. I couldn’t have put these notes together without you.

Thanks as well to the fantastic team that have produced the Jitsi software. You have created a wonderful product for everyone to use.