FreeSWITCH
对AMR
和AMR-WB
两种编码格式默认为passthough
状态,若想对AMR
和AMR-WB
进行编解码,需对mod_amr
和mod_amrwb
两个模块重新编译。
本文介绍通过源码编译所需的opencore-amr
和ov-amrwbenc
两个依赖库。当然也可使用yum
等工具直接安装libopencore-amrnb.so
、libopencore-armwb.so
、libvo-amrwbenc.so
。
* 本文内涉及的所有路径,均可根据实际情况进行更改,不局限于root用户。
- AMR编译 -
下载OpenCore AMR
源码,网址:https://sourceforge.net/projects/opencore-amr/files/opencore-amr,推荐使用版本为0.1.3。如下图:
解压压缩包并进入源码根目录进行安装:
tar xzf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3/
./configure --prefix=/root/libs
make && make install
若只需AMR
编码格式,可直接跳过此步骤。
OpenCore AMR
源码压缩包包含了AMR-NB
编码和解码,但是AMR-WB
只支持编码,所以我们需要增加AMR-WB
解码能力。
下载vo-amrwbenc
压缩包,网址:https://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc,推荐版本为0.1.3,如下图:
解压压缩包并进入源码根目录进行安装:
tar xzf vo-amrwbenc-0.1.3.tar.gz
cd vo-amrwbenc-0.1.3/
./configure --prefix=/root/libs
make && make install
至此,依赖库编译完成,opencore-amr
和ov-amrwbenc
均安装在了/root/libs
文件夹下,目录树如下:
.
├── include
│ ├── opencore-amrnb
│ │ ├── interf_dec.h
│ │ └── interf_enc.h
│ ├── opencore-amrwb
│ │ ├── dec_if.h
│ │ └── if_rom.h
│ └── vo-amrwbenc
│ └── enc_if.h
└── lib
├── libopencore-amrnb.a
├── libopencore-amrnb.la
├── libopencore-amrnb.so -> libopencore-amrnb.so.0.0.3
├── libopencore-amrnb.so.0 -> libopencore-amrnb.so.0.0.3
├── libopencore-amrnb.so.0.0.3
├── libopencore-amrwb.a
├── libopencore-amrwb.la
├── libopencore-amrwb.so -> libopencore-amrwb.so.0.0.3
├── libopencore-amrwb.so.0 -> libopencore-amrwb.so.0.0.3
├── libopencore-amrwb.so.0.0.3
├── libvo-amrwbenc.a
├── libvo-amrwbenc.la
├── libvo-amrwbenc.so -> libvo-amrwbenc.so.0.0.4
├── libvo-amrwbenc.so.0 -> libvo-amrwbenc.so.0.0.4
├── libvo-amrwbenc.so.0.0.4
└── pkgconfig
├── opencore-amrnb.pc
├── opencore-amrwb.pc
└── vo-amrwbenc.pc
由于opencore-amr
和vo-amrwbenc
安装路径为我们自定义路径(推荐将两个库安装在同一路径,路径配置在configure时通过--prefix指定,本次安装均为/root/libs
),需配置环境变量告知FreeSWITCH依赖库位置。
vim ~/.bash_profile
新增下面一行:
export PKG_CONFIG_PATH=/root/libs/lib/pkgconfig:$PKG_CONFIG_PATH
保存退出
source ~/.bash_profile
至此,依赖库已经安装完成,可开始进行mod_amr模块的编译。
进入FreeSWITCH源码目录,本次安装过程中为/root/freeswitch-1.8.5
cd /root/freeswitch-1.8.5
重新生成mod_amr模块的Makefile文件
./bootstrap.sh -j
./configure --prefix=/root/freeswitch-bin
cd src/mod/codecs/mod_amr
make
make install
至此mod_amr编译完成,fs_cli进入FreeSWITCH console前台,加载mod_amr模块,即可。
进入FreeSWITCH源码目录,本次安装过程中为/root/freeswitch-1.8.5
cd /root/freeswitch-1.8.5
重新生成mod_amrwb模块的Makefile文件
./bootstrap.sh -j
./configure --prefix=/root/freeswitch-bin
cd src/mod/codecs/mod_amrwb
make
make install
至此mod_amrwb编译完成,fs_cli进入FreeSWITCH console前台,加载mod_amrwb模块,即可。
由于FreeSWITCH默认编码格式内没有AMR
和AMR-WB
,需要修改vars.xml
内global_codec_prefs
和outbound_codec_prefs
两个配置项,用于新增编码格式。如下所示:
<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,PCMU,PCMA,H264,AMR,AMR-WB"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,PCMU,PCMA,H264,AMR,AMR-WB"/>
修改完成后需要reloadxml
生效。
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="bridge" data="{absolute_codec_string='PCMA\,PCMU'}user/$1"/>
</condition>
</extension>
<extension name="Local_Extension">
<condition field="destination_number" expression="^(10[01][0-9])$">
<action application="bridge" data="{absolute_codec_string='AMR\,AMR-WB'}user/$1"/>
</condition>
</extension>
至此,您可以愉快的使用FreeSWITCH
对AMR/AMR-WB
进行编解码了。
本文分享自 FreeSWITCH中文社区 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有