FreeSwitch
特别说明:目前本人的FreeSwitch底层能力还比较初级,所写内容大家不用当真。
安装
目前用freeswitch-1.4.14就可以了, 1.4最高版本支持视频, 安装起来会复杂些, 暂时我用不到。
$ rpm -Uvh http://files.freeswitch.org/freeswitch-release-1-0.noarch.rpm
$ yum install sox
$ yum -y install gcc-c++ g++ zlib-devel libjpeg-devel sqlite-devel libcurl-devel pcre-devel speex-devel libedit-devel openssl-devel libshout-devel lame-devel libmpg123-devel libuuid libuuid-devel libtool # 这些包依赖要先安装下
$ mkdir /usr/local/freeswitch
$ tar -zxvf freeswitch-1.4.14.tar.gz
$ cd ./freeswitch-1.4.14
$ ./configure --prefix=/usr/local/freeswitch # 会报错: configure: error: You need to either install libldns-dev or disable mod_enum in modules.conf
$ vim modules.conf # 搜索mod_enum, 把mod_enum这行注释掉, 然后重新执行上一行
$ make
$ make install
录音合成
$ wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
$ rpm -Uvh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
$ yum install lame
$ /usr/local/freeswitch/bin/fs_encode -l mod_g729 $1-in.G729 $1-in.wav
$ /usr/local/freeswitch/bin/fs_encode -l mod_g729 $1-out.G729 $1-out.wav
$ sox $1-in.wav $1-out.wav -m $1.wav
$ lame $1.wav $1.mp3
$ /usr/local/freeswitch/bin/fs_encode -> fs_encode
$ intel-ipp60071em64t-6.0p-071.noarch.rpm mod_fs_g729
$ rpm -ivh intel-ipp60071em64t-6.0p-071.noarch.rpm
$ yum install libuuid libuuid-devel
$ cd mod_fs_g729
$ make clean
$ vim MAKEFILE # 要写正确的FS的源码库和FS的安装目录
$ make
$ make install
可以用如下脚本完成录音的合成。 $ touch mixin_record.sh
/usr/freeswitch/bin/fs_encode -l mod_g729 $1-in.G729 $1-in.wav
/usr/freeswitch/bin/fs_encode -l mod_g729 $1-out.G729 $1-out.wav
sox $1-in.wav $1-out.wav -m $1.wav
lame -h $1.wav $1.mp3
rm -rf $1.wav $1-in.wav $1-out.wav
开发模式
以下三种模式并未做方案选择,开发团队应该根据情况作选择。
模式一:用C扩展底层
缺点:代码难写,写得不好容易出现内存泄露,影响并发。
模式二:用Lua处理业务
每通呼叫都会启一个Lua线程 缺点:对于连MQ或连数据库等可能不合适。
模式三:用Event Socket
优点:可以用各种高级语言。
$ fs_ctl -H ip
$ console loglevel 0 (清屏)
$ console loglevel 5
$ console loglevel 7 (debug)
$ load mod_curl # 加载curl模块
$ sofia profile internal siptrace on # 如:打开日志
/usr/local/freeswitch/log
$ ngrep -d any -pqW byline port 8021
# 用于抓包
录音
FreeSwitch可以用.wav uu-law 800hz的声音,可以由mp3格式转成.