操作系统 :CentOS 7.6_x64

FreeSWITCH版本 :1.10.9

一、安装ilbc库

从第三方库里下载指定版本:

git clone https://freeswitch.org/stash/scm/sd/libilbc.git

如果下载过慢,可从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230416 获取。
编译及安装步骤如下:
./bootstrap.sh
./configure
make
make install

安装成功:

如果遇到如下错误:

libtool: Version mismatch error.  This is libtool 2.4.6, but the
libtool: definition of this LT_INIT comes from libtool 2.4.2.
libtool: You should recreate aclocal.m4 with macros from libtool 2.4.6

libilbc目录下会自动生成libtool文件,将系统目录的libtool复制过来即可:

此外,通过 yum install ilbc-devel.x86_64 安装的方式会报错:

二、编译mod_ilbc模块

1、更新ilbc库

可通过如下方式配置libilbc库:

ln -sf /usr/local/lib/libilbc.so.0.0.2 /lib64/libilbc.so
ln -sf /usr/local/lib/libilbc.so.0.0.2 /lib64/libilbc.so.0

2、打开FreeSWITCH编译配置项

编辑源码目录的modules.conf文件,去掉ilbc的注释:

#codecs/mod_ilbc //去掉这个注释的#号

3、重新配置编译FreeSWITCH

源码目录执行如下命令:

./devel-bootstrap.sh && ./configure && make && make install

如果编译FreeSWITCH遇到问题,可参考这篇文章:

CentOS7环境源码安装freeswitch1.10

4、加载mod_ilbc模块

编辑 conf/autoload_configs/modules.conf.xml 文件,添加如下内容:

<load module="mod_ilbc"/>

重启FreeSWITCH或执行重新load操作:

如果加载不报错,则添加iLBC编码成功。

三、编码测试

1、开启iLBC编码支持及转码

文件: vars.xml

1)开启iLBC编码支持

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8,iLBC"/>
<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8,iLBC"/>

2)开启转码

添加如下内容:

<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/>

2、iLBC编码测试

1)配置话机

软电话A的语音编码只配置iLBC:

软电话B的语音编码只配置PCMU:

通话效果:

A拨打B,呼叫成功。

看日志,发现Fs和A协商了iLBC编码,然后和B协商了PCMU编码。

抓包结果如下:

四、资源获取

本文涉及资源可从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 20230416 获取。

FreeSWITCH添加iLBC编码及转码的更多相关文章

  1. FreeSWITCH增加iLBC编码

    1. 安装ilbc库从第三方库里下载指定版本 git clone https://freeswitch.org/stash/scm/sd/libilbc.git ./bootstrap.sh ./co ...

  2. Freeswitch 添加可转码的G729编码

    默认情况下Freeswitch自带的G729模块是pass-through-并不支持转码. 不过我们依然有个好奇的心, 所以我们决定添加一个支持G729转码的模块到Freeswitch. 1. 下载m ...

  3. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

  4. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  5. Python基础-字符编码与转码

    ***了解计算机的底层原理*** Python全栈开发之Python基础-字符编码与转码 需知: 1.在python2默认编码是ASCII, python3里默认是utf-8 2.unicode 分为 ...

  6. 小白的Python之路 day2 字符编码和转码

    字符编码和转码 详细文章: http://www.cnblogs.com/yuanchenqi/articles/5956943.html http://www.diveintopython3.net ...

  7. Python字符编码与转码

    字符编码与转码 注: 该图转自 http://www.cnblogs.com/luotianshuai/p/5735051.html. Python2 解码,编码 #Python2 #-*- codi ...

  8. 【转】Visual Studio——多字节编码与Unicode码

    多字节字符与宽字节字符 1) char与wchar_t 我们知道C++基本数据类型中表示字符的有两种:char.wchar_t. char叫多字节字符,一个char占一个字节,之所以叫多字节字符是因为 ...

  9. Python智能检测编码并转码

    #安装包工具 $pip3 install chardet #直接打开文件,中文显示乱码 >>> import chardet >>> f = open('test. ...

  10. python的编码与转码

    编码问题一直是初学者的难题,搞不明白.甚至一些程序员做了多年的程序,但是编码一直整不清,下面就来认识认识编码吧. ASCII(American Standard Code for Informatio ...

随机推荐

  1. javaheima14

    Java 日志框架 日志框架的概述 记录程序运行过程中的信息,并可以进行永久存储 以前记录日志的方式--输出语句 弊端 信息只能展示在控制台 不能将其记录到其他位置(文件,数据库) 想取消记录的信息需 ...

  2. IT工具知识-11:一种安卓投屏到Win10失败的解决方法

    软硬件平台 电脑:WIN10 LTSC 手机:红米K30Pro/MIUI 11.0.26 投屏软件:安卓端-自带投屏,WIN10-自带投屏(连接) 故障描述 之前还能用的,但是在换了个路由器之后就不能 ...

  3. [C#]索引指示器

    参考代码: using System; namespace IndexerDemo { class StuInfo { public string Name; public string[] CouN ...

  4. The difference of src and href

    href是Hypertext Reference的缩写,表示超文本引用.用来建立当前元素和文档之间的链接.常用的有:link.a.例如: <link href="reset.css&q ...

  5. Adams:导出动画

    1 首先模型在adams里能正常运动,点击start simulation仿真一遍. 2 然后在界面上按F8进入Plotting界面. 3 在左上角把Plotting换成Animation. 4 然后 ...

  6. c# form-data表单提交,post form上传数据、文件

    引用自:https://www.cnblogs.com/DoNetCShap/p/10696277.html 表单提交协议规定:要先将 HTTP 要求的 Content-Type 设为 multipa ...

  7. 一个关于 Linux环境下输出操作符 >和>>的问题

    [>和>>的区别]命令>文件,表示以覆盖的方式,把命令正确输出到指定的文件或者设备当中:命令>>文件,表示以追加的方式,把命令正确输出到指定的文件或者设备当中. [ ...

  8. 基于SpringBoot WebMagic爬虫爬取大乐透双色球

    大乐透网页地址:https://kjh.55128.cn/dlt-history-360.htm 双色球网页地址:https://kjh.55128.cn/ssq-history-120.htm   ...

  9. 【ASP.NET Core】修改Blazor.Server的Hub地址后引发的问题

    Blazor Server,即运行在服务器上的 Blazor 应用程序,它的优点是应用程序在首次运行时,客户端不需要下载运行时.但它的代码是在服务器上执行的,然后通过 SignalR 通信来更新客户端 ...

  10. Python学习笔记--序列+集合+字典

    序列 切片:从一个序列中,取出一个子序列 注意: 案例: 实现: 集合 无序性.唯一性 添加新元素: .add 移除元素: .remove 随机取出某个元素: 清空集合: .clear 取两个集合的差 ...