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
git config --global pull.rebase
true
cd
/usr/src/
git clone https:
//freeswitch
.org
/stash/scm/fs/freeswitch
.git freeswitch.git
cd
freeswitch.git
.
/bootstrap
.sh -j
.
/configure
Enable mod_av:
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
Kernel Settings:
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
Conference Configuration:
The layout of the Conference can be altered by creating a definition. Below is an example.
Edit: /usr/local/freeswitch/autoload_configs/conference.conf.xml
<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.wav"/>
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<param name="alone-sound" value="conference/conf-alone.wav"/>
<param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
<param name="exit-sound" value="tone_stream://%(500,0,300,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-locked.wav"/>
<param name="is-unlocked-sound" value="conference/conf-is-unlocked.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|minimize-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>
Editing the Dial Plan:
The following records the inbound Video Stream into the Conference into a file in the /tmp/ folder.
This is a mechanism for invoking mod_av.
<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.
Comments
0 comments
Please sign in to leave a comment.