FreeSWITCH 1.10.10 简单图形化界面14 - 添加729编码转码支持
- 0、 界面预览
- 1、G729简介
- 2、透传模式使用G729
- 3、转码模式使用G729
FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/132479324
0、 界面预览
http://myfs.f3322.net:8020/
用户名:admin,密码:admin
FreeSWITCH界面安装参考:https://blog.csdn.net/jia198810/article/details/132479324
1、G729简介
G.729是一种由许多VoIP供应商支持的高质量、低带宽的音频编解码器。使用G.729编码的通话的语音质量与标准PSTN通话所使用的G.711编码器相当。然而,G.729通话所需的带宽要比G.711通话低得多。使用G.729的企业能更有效地利用可用的网络带宽。
G.729使用的带宽大约是G.711的1/8(8 kbit/s对比64 kbit/s)。这意味着使用G.729编码进行通话时,需要的带宽只有G.711编码通话所需带宽的约1/8。这种高效的带宽利用是G.729编解码器的一大优势。
FreeSWITCH的G.729提供两种使用方式:透传(Passthrough)和转码(Transcoding),FreeSWITCH自带的G729编码,在透传时不需要许可证,但是也有一些限制。如果需要转码,就需要在FreeSWITCH网站购买G.729许可证。一路通话(转码),一个许可证。
2、透传模式使用G729
FreeSWITCH的自带的G729可以在透传模式中使用,但是默认配置不是透传模式,如直接使用G729编码,Log会提示:
[ERR] mod_g729.c: 102 This code is only usable in passthrough mode!
要在FreeSWITCH中通过透传模式使用G729,需要修改配置文件和呼叫规则。
# 在conf/sip_profiles/internal.xml中启用或者添加inbound-bypass-media参数
<param name="inbound-bypass-media" value="true"/>
# 在呼叫规则桥接之前,添加bypass_media变量
<action application="set" data="bypass_media=true"/>
<action application="bridge" data="user/1000"/>
配置完毕后,在fs_cli中执行reload mod_sofia。
- 测试一下:
将主被叫分机的编码都启用G729,测试一下看是否可以使用G729正常通话,如下图:
3、转码模式使用G729
FreeSWITCH 默认情况下不提供 G.729 码流转码功能,但可以通过使用开源的 bcg729 来实现。bcg729 是一个由Belledonne Communications开发的开源实现,可以在 FreeSWITCH 中作为 G.729 编解码器的替代选择。通过集成 bcg729,用户可以在 FreeSWITCH 中实现对 G.729 编解码的支持,也可以进行 G.729 码流转码。
开源的bcg729地址:https://github.com/xadhoom/mod_bcg729
#编译bcg729#先补下依赖 yum install gcc libtool autoconf automake#在进入源码../src/mod/endpoints目录下拉去源码git clone https://github.com/typefo/mod_g729.git#进入../src/mod/endpoints/mod_g729目录,并执行编译
cd ../src/mod/endpoints/mod_g729
make
#编译时如果提示找不到头文件,可以将FreeSWITCH源码include目录下的对应头文件复制到../mod_g729/bcg729/include/ 目录,#还有其他找不到的头文件可以使用find命令在FreeSWITCH源码目录下搜索,然后复制到../mod_g729/bcg729/include/目录,然后再重新编译,编译完成后,将mod_bcg729.so复制到FreeSWITCH的库目录 /usr/lib/freeswitch/mod/ (建议先备份原 mod_g729.so )
cp mod_g729.so /usr/lib/freeswitch/mod/# 配置/etc/freeswitch/autoload_configs/modules.conf.xml 启动自动加载 mod_g729<load module="mod_g729"/># 在fs_cli中重启FreeSWITCHfsctl shutdown restart
如果安装了 简单图形化界面 ,可以在系统中直接拷贝编译后的mod_g729.so模块,直接替换FreeSWITCH自带的。
开启FreeSWITCH的转码功能,在conf/vars.xml中修改或添加media_mix_inbound_outbound_codecs变量并添加G729编码。
#在conf/vars.xml中修改或添加media_mix_inbound_outbound_codecs变量<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/><X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMU,PCMA,G729"/><X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMU,PCMA,G729"/>
# 修改vars.xml后,要重启FreeSWITCH
# 在fs_cli中重启FreeSWITCHfsctl shutdown restart
#或者在呼叫规则桥接时,设置media_mix_inbound_outbound_codecs变量
<action application="bridge" data="{media_mix_inbound_outbound_codecs=true}user/1000" />
# 修改呼叫规则后,要重新加载xml
# 在fs_cli中执行
reloadxml
- 测试一下:
将主被叫分机的其中一方编码设置为G729,测试一下看是否可以实现其他编码和G729编码正常通话,如下图: