g729编码的占用带宽是g711的1/8,使用g729编码,可以极大的降低带宽的费用。fs原生的mod_g927模块是需要按并发数收费的,但是我们可以使用开源的bcg729模块。
这里需要准备两个仓库,为了加快clone速度,我将这两个模块导入到gitee上。
安装前提 已经安装好了freeswitch, 编译mod_bcg729模块,需要指定freeswitch头文件的位置
step0: 切换到工作目录
cd /usr/local/src/
step1: clone mod_bcg729
git clone https://gitee.com/wangduanduan/mod_bcg729.git
step2: clone bcg729
mod_bcg729模块在编辑的时候,会检查当前目录下有没有bcg729的目录。 如果没有这个目录,就会从github上clone bcg729的项目。 所以我们可以在编译之前,先把bcg729 clone到mob_bcg729目录下
cd mod_bcg729
git clone https://gitee.com/wangduanduan/bcg729.git
step3: 编辑mod_bcg729
编译mod_bcg729需要指定fs头文件switch.h的位置。 在Makefile项目里有FS_INCLUDES这个变量用来定义fs头文件的位置
FS_INCLUDES=/usr/include/freeswitch
FS_MODULES=/usr/lib/freeswitch/mod
如果你的源码头文件路径不是/usr/include/freeswitch, 则需要在执行make命令时通过参数指定, 例如下面编译的时候。
make FS_INCLUDES=/usr/local/freeswitch/include/freeswitch
Tip
如何找到头文件的目录?
头文件一般在fs安装目录的include/freeswitch目录下
如果还是找不到,则可以使用 find /usr -name switch.h -type f 搜索对应的头文件
step4: 复制so文件
mod_bcg729编译之后,可以把生成的mod_bcg729.so拷贝到fs安装目录的mod目录下
step5: 加载模块
命令行加载
load mod_bcg729
配置文件加载 命令行加载重启后就失效了,可以将加载的模块写入到配置文件中。 在modules.conf.xml中加入
<load module="mod_bcg729"/>
step5: vars.xml修改
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU,PCMA,G729" />
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,G729"/>
<X-PRE-PROCESScmd="set"data="media_mix_inbound_outbound_codecs=true"/>
step6: sip profile修改
开启转码
<param name="disable-transcoding" value="false"/>
然后重启fs, 进入到fs_cli中,输入: show codec, 看看有没有显示729编码。然后就是找话机,测试g729编码了。