前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FreeSWITCH如何集成AMR/AMR-WB编解码

FreeSWITCH如何集成AMR/AMR-WB编解码

作者头像
Seven Du
发布2024-04-11 20:26:14
1290
发布2024-04-11 20:26:14
举报

FreeSWITCHAMRAMR-WB两种编码格式默认为passthough状态,若想对AMRAMR-WB进行编解码,需对mod_amrmod_amrwb两个模块重新编译。

本文介绍通过源码编译所需的opencore-amrov-amrwbenc两个依赖库。当然也可使用yum等工具直接安装libopencore-amrnb.solibopencore-armwb.solibvo-amrwbenc.so

* 本文内涉及的所有路径,均可根据实际情况进行更改,不局限于root用户。

- AMR编译 -

下载OpenCore AMR源码,网址:https://sourceforge.net/projects/opencore-amr/files/opencore-amr,推荐使用版本为0.1.3。如下图:

解压压缩包并进入源码根目录进行安装:

代码语言:javascript
复制
tar xzf opencore-amr-0.1.3.tar.gz
cd opencore-amr-0.1.3/
./configure --prefix=/root/libs
make && make install

- AMR-WB编译 -

若只需AMR编码格式,可直接跳过此步骤。

OpenCore AMR源码压缩包包含了AMR-NB编码和解码,但是AMR-WB只支持编码,所以我们需要增加AMR-WB解码能力。

下载vo-amrwbenc压缩包,网址:https://sourceforge.net/projects/opencore-amr/files/vo-amrwbenc,推荐版本为0.1.3,如下图:

解压压缩包并进入源码根目录进行安装:

代码语言:javascript
复制
tar xzf vo-amrwbenc-0.1.3.tar.gz
cd vo-amrwbenc-0.1.3/
./configure --prefix=/root/libs
make && make install

至此,依赖库编译完成,opencore-amrov-amrwbenc均安装在了/root/libs文件夹下,目录树如下:

代码语言:javascript
复制
.
├── 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-amrvo-amrwbenc安装路径为我们自定义路径(推荐将两个库安装在同一路径,路径配置在configure时通过--prefix指定,本次安装均为/root/libs),需配置环境变量告知FreeSWITCH依赖库位置。

代码语言:javascript
复制
vim ~/.bash_profile
新增下面一行:
export PKG_CONFIG_PATH=/root/libs/lib/pkgconfig:$PKG_CONFIG_PATH
保存退出
source ~/.bash_profile

- 编译mod_amr -

至此,依赖库已经安装完成,可开始进行mod_amr模块的编译。

代码语言:javascript
复制
进入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模块,即可。

- 编译mod_amrwb -

代码语言:javascript
复制
进入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默认编码格式内没有AMRAMR-WB,需要修改vars.xmlglobal_codec_prefsoutbound_codec_prefs两个配置项,用于新增编码格式。如下所示:

代码语言:javascript
复制
<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生效。

  • 呼叫路由
  • AMR/AMR-WB转PCMA/PCMU
代码语言:javascript
复制
<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>
  • PCMA/PCMU转AMR/AMR-WB
代码语言:javascript
复制
<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>

至此,您可以愉快的使用FreeSWITCHAMR/AMR-WB进行编解码了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeSWITCH中文社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • - AMR-WB编译 -
  • - 添加环境变量 -
  • - 编译mod_amr -
  • - 编译mod_amrwb -
  • - 配置路由 -
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档