FreeSWITCH之配置G729转码

在互联网大数据时代的背景下,作为服务器程序,高并发尤为重要,线路带宽资源就显得更加弥足珍贵了。目前比较流行语音编码有2种G711、G729。由于语音需要采用上下行对等的宽带,G711每线需要大约90kbit/s/S的带宽,而G729每线仅需要30kbit/s/S的带宽。所以采用G729编码就节约了大量带宽。
FreeSWITCH默认是不支持G729转码的,商业版本的G729效率是最高的,不过要10刀1个并发,相信很少公司会舍得采用这么高的成本去做业务。这里介绍一下freeswitch配置开源的bcg729进行转码的方法:

1.准备工作:与当前运行的FreeSWITCH版本一致的源码一份,Linux 虚拟机
2.编译bcg729:
2.1 在FreeSWITCH官网下下载源码 [freeswitch-1.6.19.tar.gz请添加链接描述](http://files.freeswitch.org/releases/freeswitch/freeswitch-1.6.19.tar.gz)
解压源码到/usr/src/freeswitch-1.6.19
2.2 进入源码../src/mod/endpoints目录
cd /usr/src/freeswitch-1.6.19/src/mod/endpoints
2.3 Git检出FreeSWITCH适用的G729模块(这部分源码是对BCG729进行FreeSWITCH的适配)
git clone https://github.com/xadhoom/mod_bcg729.git
2.4 将mod_bcg729改名为mod_g729
mv mod_bcg729 mod_g729
2.5 返回FreeSWITCH源码主目录,执行配置
./configure
2.6 进入../src/mod/endpoints/mod_g729目录,并执行编译
cd /usr/src/freeswitch-1.6.19/src/mod/endpoints/mod_g729
make
编译时如果提示找不到头文件,可以将FreeSWITCH源码include目录下的对应头文件复制到
../mod_g729/bcg729/include/目录,还有其他找不到的头文件可以使用find命令
在FreeSWITCH源码目录下搜索,然后复制到../mod_g729/bcg729/include/目录,然后再重新编译
2.7 编译完成后,将mod_bcg729.so复制到FreeSWITCH的库目录,也可以直接替换FreeSWITCH的库目录下的G729库文件
cp mod_bcg729.so /usr/lib/freeswitch/mod/
2.8 修改/etc/freeswitch/vars.xml
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=G729,OPUS,G722,PCMU,PCMA,VP8"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=G729,OPUS,G722,PCMU,PCMA,VP8"/>
<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/>
![](http://i2.51cto.com/images/blog/201805/23/dc837eccd7fc5093fa6fa3637694bf7c.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
2.9 配置sip_profile
<param name="disable-transcoding" value="false"/>注释或者写成false,这行直接代表freeswitch是否开启转码功能
<param name=”inbound-late-negotiation” value=”false”/>
<param name=”inbound-zrtp-passthru” value=”false”/>
2.10 配置/etc/freeswitch/autoload_configs/modules.conf.xml启动自动加载mod_bcg729
<load module="mod_bcg729"/>
![](http://i2.51cto.com/images/blog/201805/23/080dc06c1923813d45b19332e21cde30.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
3.重启FreeSWITCH
service freeswitch restart
或者也可以进入FreeSWITCH控制界面,命令加载mod_bcg729模块
fs_cli
unload mod_g729
load mod_bcg729

至此就配置完成了

原文地址:http://blog.51cto.com/hushengyong/2119661

时间: 2024-10-12 14:12:52

FreeSWITCH之配置G729转码的相关文章

FreeSWITCH折腾笔记5——G729转码支持

FreeSWITCH默认是不支持G729转码的,但可至此G729媒体透传,因此如果两个话机有一个只支持G729时是无法进行呼叫的,同时在使用G729编码时FreeSWITCH是不能进行录音的. 当然如果商业应用的话可以购买G729的许可,10刀一通道,或者使用硬件的转码卡,价格貌似就更高了. 网络上有很多使用8000hz的源码包编译FreeSWITCH可用的G729模块,但是效果一般,我这里使用的是bcg729的源码来进行编译,转码效果比8000hz的稍好.BCG729当前最新的版本是1.0.3

FS G729转码测试记录

默认情况下Freeswitch自带的G729模块是pass-through-并不支持转码.我们决定添加一个支持G729转码的模块到Freeswitch.参考自 8000HZ. 一.安装支持转码的G729模块 1. 下载mod_g729.zip (改自Deepwalker-fs_itu_g729-0bcddb5.tar) 2. 解压 #unzip mod_g729.zip 3. 删除原来的模块, 将新模块添加到codec目录中 rm -rf src/mod/codecs/mod_g729 mv m

衡阳高防服务器租用-CentOS6.2服务器环境配置:源码编译PHP5.4

衡阳高防服务器租用-CentOS6.2服务器环境配置:源码编译PHP5.4 在 开始之前,先把关于libmcrypt库的问题再说说,我也是在安装过程遇到的,因为原本以为yum可以安装好一切依赖包的,但在Centos6.2 64位环境下就是这么奇怪,yum安装上的libmcrypt始终都在编译过程提示缺少一个.h文件,为此差点碰伤了头.经过过多试验,总算把 libmcrypt这块先弄好了,否则到了PHP的安装环境是做不来的.安装PHP5.4.13要做的相关准备工作有除了下载PHP5.4.13的源码

配置iDempiere源码开发环境

你需要一个较为快速通畅的互联网连接来下载源代码! 安装软件: OS: Windows Server 2008 R2 SP1 x64 英文版 Database: Oracle 11G R2 x64 英文版 Java JDK: 1.7.0_67 x64 eclipse indigo SR2 x64 著名的eclipse,建议使用这个版本 tortoisehg-3.1-hg-3.1+2 x64 源码管理客户端 以上安装完成后,运行eclipse,点击Help菜单,Install New Softwar

Apollo配置中心源码分析

Apollo配置中心源码分析 1. apollo的核心代码分享 SpringApplication启动的关键步骤 在SpringApplication中,会加载所有实现了Init方法的类 protected void applyInitializers(ConfigurableApplicationContext context) { for (ApplicationContextInitializer initializer : getInitializers()) { Class<?> r

第二天,关于sip的学习(freeSwitch增加配置录音功能)(2)

学习一些FreeSwitch核心的一些命令,再细节地了解下FS. 看下是不是之前怀疑的,二次编程的时候更改配置文件,或者java注入一些参数到配置文件,详细了解下配置文件. 这个应该比较难的,不清楚 问下百度先生吧. 学习了一个新知识  FS增加录音功能如何去配置 一般电话系统都可以将本系统内的语音通话录制下来,FreeSwitch 系统中也可以进行语音录制. 需求: 录制系统中的所有通话. 实现: (1)建立一个文件夹 freeswitch/recordings/archive/ ,用来存储录

CYQ.Data.Orm.DBFast 新增类介绍(含类的源码及新版本配置工具源码)

前言: 以下功能在国庆期就完成并提前发布了,但到今天才有时间写文介绍,主要是国庆后还是选择就职了,悲催的是上班的地方全公司都能上网,唯独开发部竟不让上网,是个局域网. 也不是全不能上,房间里有三台能上网的机子(两台笔记本+一台台式机),下载资料还得用公司的U盘再转到自己电脑,这种半封闭的环境,相当的让人不适应,有种欲仰天吐血的感觉. 这一周我都向三个带总的领导反映了上网问题,不过没啥响应,估计是没戏. 于是我只有把其中一台能上网的笔记本拿到自己桌子上去独自占用了,勉强也能上下网了,不过基于安全问

HttpClient 4.3连接池参数配置及源码解读

目前所在公司使用HttpClient 4.3.3版本发送Rest请求,调用接口.最近出现了调用查询接口服务慢的生产问题,在排查整个调用链可能存在的问题时(从客户端发起Http请求->ESB->服务端处理请求,查询数据并返回),发现原本的HttpClient连接池中的一些参数配置可能存在问题,如defaultMaxPerRoute.一些timeout时间的设置等,虽不能确定是由于此连接池导致接口查询慢,但确实存在可优化的地方,故花时间做一些研究.本文主要涉及HttpClient连接池.请求的参数

Openfire开发配置,Openfire源码配置,OpenFire二次开发配置

1.下载源码:http://www.igniterealtime.org/downloads/source.jsp 2.把源码解压出的openfire_src目录放至eclipse workplace(注意:若是变更了解压出来的文件名称,则接下来全部用到文件名称的地方都要作出对应更改,否则会报错!) 3.把openfire_src目录里的三个没用的html文件删除 4.打开eclipse,新建一个名为openfire_src的Java Project,然后finish 注:此处的默认路径为ope