The freeswitch video recording tests were conducted with the following specifications.
- 2 Virtual machines running debian 11 OS and freeswitch.
- Machines were connected on a local virtual network.
- 2 SIP phones. Registered on 1 VM each.
A simple small network to minimize network lag and outside packet interference.
A standard video call was made from Phone A to phone B using a custom dialplan for each of the codecs/modules being tested.
The parameters to look out for:
- Compatibilty of the recorder with other software.
- Availability of the recorded file.
- Quality of the recorded file.
All the mods were tested in the following way:
- An audio call between both phones to determine audio recording.
- A video call from Phone A to Phone B.
- A video call from Phone B to Phone A. (determine leg recording priority)
As the build in default for video recording, mod_fsv was the first choice.
It is relatively easy to configure since the mod comes pre-installed with freeswitch. All that needs to be done is uncommenting the line
"<load module='mod_fsv'/>" from the
modules.conf.xml file in the freeswitch folder.
The mod can be called into action by simply using this statement inside the dialplan. There is no extra configuration required.
<action application="record" data="/tmp/testrecord.fsv">
The testing colncluded with a few shortcomings which are listed here
Mod_fsv requires its own dialplan app.
The recorded files are recorded in the .fsv file format.
The recorded files can only be played through a dialplan instruction since the files are stored in .fsv format which is only playable via the freeswitch video player.
.fsv format also provides the challenge of endian-ness since files recorded on machines of different processing capabilities cannot be inter-played.
- The mod only records one leg of an audio/video call at a time.
Mod_av is the newer alternative to mod_fsv. It also comes installed by default in the newer versions of freeswitch and is the base mod for many recording modules in freeswitch.
Testing with mod_av enabled as the default recording solution yeilded the following:
- It is incompatible with codec VP8.
- It requires the module 'mod_h26x' inside freeswitch to be turned off and only works with the codec strings of h264/h265.
- mod_av also gives us the choice of recording the file in ffmpeg, mp4, wav and other formats suitable to requirements. There is no additional config required, simply putting the file-format at the of the recording destination chooses the format.
- Same as mod_fsv, it only records one leg of a video call at a time. The leg which is recorded is determined arbitrarily and there seems to be no flag in the config files that indicates the preferred leg option.
Mod_av is an overall better solution than the outdated fsv module but it is no way the desired recording solution for video call recording.
uuid_record is built on top of the already existing mod_av module. Uuid_record simply uses the uuid of the different call legs to set a parameter that can be used to indicate to the dialplan which file needs to be recorded.
It still renders us unable to record both legs of the video call at the same time but it gives us the capability to choose which leg we want to record.
It uses the h264/h265 codecs just as mod_av and can record files in most generally usable file fromats.