Video Conference Recording on FreeSWITCH
FreeSWITCH is a telephony platform which is capable of performing video conferencing, in an MCU like fashion.
Note: FreeSWITCH is not a Live Assist Product and as such the contents of this document are not supported. The directions given are intended to be a starting point for configuration and are not given as a recommendation for a Production System.
Installing freeSWITCH with recording
If Recording is required the mod_av module is required to be built. This can be done on the Debian OS following instructions found here:
https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.6+Video
Below is a snapshot of the installation from the above page:
Install Dependencies:
apt-get
install
-y --force-
yes
freeswitch-video-deps-most
Compiling:
# because we're in a branch that will go through many rebases it's
# better to set this one, or you'll get CONFLICTS when pulling (update)
git config --global pull.rebase
true
# then let's get the source
cd
/usr/src/
git clone https:
//freeswitch
.org
/stash/scm/fs/freeswitch
.git freeswitch.git
cd
freeswitch.git
.
/bootstrap
.sh -j
.
/configure
perl -i -pe
's/#applications\/mod_av/applications\/mod_av/g'
modules.conf
make
make
install
make
cd
-sounds-
install
make
cd
-moh-
install
make
samples
echo
"net.core.rmem_max = 16777216"
>
/etc/sysctl
.d
/vid
.conf
echo
"net.core.wmem_max = 16777216"
>>
/etc/sysctl
.d
/vid
.conf
echo
"kernel.core_pattern = core.%p"
>>
/etc/sysctl
.d
/vid
.conf
<profile name="video-mcu">
<param name="domain" value="$${domain}"/>
<param name="rate" value="48000"/>
<param name="channels" value="2"/>
<param name="interval" value="20"/>
<param name="energy-level" value="200"/>
<!-- <param name="tts-engine" value="flite"/> -->
<!-- <param name="tts-voice" value="kal16"/> -->
<param name="muted-sound" value="conference/conf-muted.w
av"/> <param name="unmuted-sound" value="conference/conf-unmuted
.wav"/> <param name="alone-sound" value="conference/conf-alone.w av"/>
<param name="enter-sound" value="tone_stream://%(200,0,5 00,600,700)"/>
<param name="exit-sound" value="tone_stream://%(500,0,3 00,200,100,50,25)"/>
<param name="kicked-sound" value="conference/conf-kicked.
wav"/> <param name="locked-sound" value="conference/conf-locked.
wav"/> <param name="is-locked-sound" value="conference/conf-is-lock
ed.wav"/> <param name="is-unlocked-sound" value="conference/conf-is-unlo
cked.wav"/> <param name="pin-sound" value="conference/conf-pin.wav
"/> <param name="bad-pin-sound" value="conference/conf-bad-pin .wav"/>
<param name="caller-id-name" value="$${outbound_caller_name }"/>
<param name="caller-id-number" value="$${outbound_caller_id}"
/> <param name="comfort-noise" value="false"/>
<param name="conference-flags" value="video-floor-only|minimi
ze-video-encoding|rfc-4579| livearray-sync|video-muxing- personal-canvas"/> <param name="video-mode" value="mux"/>
<param name="video-layout-name" value="3x3"/>
<param name="video-layout-name" value="group:g"/>
<param name="video-canvas-count" value="3"/>
<param name="video-super-canvas-label
-layers" value="true"/> <param name="video-canvas-size" value="1920x1080"/>
<param name="video-canvas-bgcolor" value="#333333"/>
<param name="video-layout-bgcolor" value="#000000"/>
<param name="video-codec-bandwidth" value="1mb"/>
<param name="video-fps" value="15"/>
</profile>
<extension name="cdquality_stereo_conferences">
<condition field="destination_number" expression="^(35\d{2})$">
<action application="export" data="nolocal:absolute_codec_string=OPUS,PCMU,PCMA,VP8"/>
<action application="set" data="enable_file_write_ buffering=false"/>
<action application="export" data="execute_on_answer=record_session /tmp/${strftime(%Y%m%d_%H%M%S) }_${caller_id_number}_${ destination_number}.mp4"/>
<action application="answer"/>
<action application="conference" data="test@video-stereo"/>
</condition>
</extension>
Access Control List
Calls originating from FCSDK will need the 'Outbound Gateway' configured to direct calls into freeSWITCH. The ACL will need to be configured to allow access to the dialplan.
For further details on FreeSWITCH configuration refer to: FCSDK /FreeSWITCH Interop Guide.