A tool to record every participant of a legacy or new matrix, call to separate audio and video files.
Go to file
Marcel Radzio e9a525f1a5 „.github/dependabot.yml“ hinzufügen 2023-02-28 14:09:19 +00:00
.github „.github/dependabot.yml“ hinzufügen 2023-02-28 14:09:19 +00:00
.vscode Initial version (missing renegotiation of streams) 2023-01-29 02:00:16 +01:00
matrix_call_multitrack_recorder FOSDEM fixes 2023-02-07 14:20:10 +01:00
tests Initial version (missing renegotiation of streams) 2023-01-29 02:00:16 +01:00
.editorconfig Initial version (missing renegotiation of streams) 2023-01-29 02:00:16 +01:00
.gitignore Send Recording Duration as video stream 2023-01-30 03:28:15 +01:00
LICENSE Update readme and add license 2023-01-29 14:23:44 +01:00
README.md Add requirements 2023-02-28 13:41:23 +00:00
black.png FOSDEM fixes 2023-02-07 14:20:10 +01:00
pyproject.toml Improve state keeping by using futures instead of while loops and sleep 2023-02-01 19:05:42 +01:00



PyPI - Version PyPI - Python Version

Table of Contents


This bot currently is missing some polishing especially on stability and usability. Also it doesnt work with rejoining currently or changing streams. Therefor I do recommend it should not be used in production just yet.


Due to changes to the nio dependency I currently cant upload it to pypi. For now you have to install it from git directly:



  • python3-pip
  • git
  • libolm-dev
pip3 install git+https://git.nordgedanken.dev/mtrnord/matrix-call-multitrack-recorder.git


Please Note that this is still in alpha. State inconsistencies are to be expected.

Starting/Stopping a recording

1-1 Rooms

In 1-1 Rooms the recording starts automatically after ~1-2s. Currently it will keep saying it is connecting. There is a fix for this in the pipeline but yet to be written.

A call stops when the call ends.

Matrix-Call Rooms

Here the call doesn't automatically start. Instead you need to run !start. This can happen before or after joining. The bot will write a message when the recording was successfully started. In case the time isn't shown by the bot you should be able to make it update by changing rooms.

To stop the recording you run !stop.

The bot should record everyone joining late as well. There may be a slight delay due to call handshaking before it actually starts. New joining people may not see the Video currently. A fix is planned.

Where are the recordings?

Currently they get stored to the working directory of the bot in a folder named recordings. In that folder you find a folder per call or conference id. In there you find each stream separate. Note that changing the audio device, webcam being turned off and on again or screensharing may cause new recording files as the webrtc connection might be rengotiated. There is also a chance that this fails currently. A fix is on the way.

Later it is planned to be able to download them as well as optionally postprocess and merge them.

Please note that if you have a Element-Call Room in Element clients the call doesn't end when everyone leaves. The bot currently therefor does not create a new folder.


matrix-call-multitrack-recorder is distributed under the terms of the AGPL-3.0-or-later license.