FreeSwitch 加载ilbc模块问题解决

问题:编译freeswitch-1.6.14,总是报错这个,搜索百度,Google各种方式均无效
You must install libilbc-dev to build mod_ilbc


查错定位:其实是有这个库的
[root@localhost ~]# gcc -l ilbc     #可以发现当前系统是可以直接找到ilbc库
/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crt1.o:在函数‘_start’中:
(.text+0x20):对‘main’未定义的引用
collect2: 错误:ld 返回 1
[root@localhost ~]# 

[root@localhost ~]# find /usr/ -iname "*ilbc*so*"  #可以找到ilbc的库文件
/usr/local/lib/libilbc.so.0.0.2
/usr/local/lib/libilbc.so.0
/usr/local/lib/libilbc.so
/usr/local/freeswitch.2018.03.14/mod/mod_ilbc.so
/usr/local/freeswitch.1.4.4_ilbc_ok/mod/mod_ilbc.so
/usr/local/freeswitch.1.4.4_ilbc_ok/mod/fs_mod_ilbc/mod_ilbc.so
/usr/local/freeswitch/mod/mod_ilbc.so
[root@localhost ~]# 

[root@localhost ~]# find /usr/ -iname "*ilbc*h*"  #可以找到ilbc的头文件
/usr/local/include/ilbc/ilbc.h
/usr/local/include/ilbc.h
[root@localhost ~]# 

freeswitch 与 mod_ilbc, ilbc-dev的关系图


折腾1天了,换个思路:
找到一个与freeswitch-1.6.14 版本相近的freeswitch专用ilbc rpm包


[root@localhost ilbc]#  wget --no-check-certificate https://rpmfind.net/linux/mageia/distrib/cauldron/x86_64/media/core/release/freeswitch-codec-ilbc-1.6.19-3.mga7.x86_64.rpm
[root@localhost ilbc]# rpm2cpio freeswitch-codec-ilbc-1.6.19-3.mga7.x86_64.rpm | cpio -div  #解压这个包
[root@localhost ilbc]# ldd usr/lib64/freeswitch/mod/mod_ilbc.so |grep -i not                             #会发现有几个依赖库 找不到
	libpq.so.5 => not found
	libssl.so.1.0.0 => not found
	libcrypto.so.1.0.0 => not found
	libtinfo.so.6 => not found
[root@localhost freeswitch-1.6.14]# yum install -y postgresql-devel                           #解决问题:libpq.so.5 => not found
[root@localhost freeswitch-1.6.14]# cp /usr/lib64/libssl.so /usr/lib64/libssl.so.1.0.0        #解决问题:libssl.so.1.0.0 => not found
[root@localhost freeswitch-1.6.14]# cp /usr/lib64/libcrypto.so /usr/lib64/libcrypto.so.1.0.0  #解决问题:libcrypto.so.1.0.0 => not found
[root@localhost ncurses-6.0]# ln -s /usr/lib/libncurses.so.6.0   /usr/lib64/libtinfo.so.6     #解决问题:libtinfo.so.6 => not found
[root@localhost ilbc]# ldd usr/lib64/freeswitch/mod/mod_ilbc.so |grep -i not                  #会发现库依赖问题全部已经解决
[root@localhost ilbc]# rm -rf /usr/local/freeswitch/mod/mod_ilbc*                             #清理freeswitch存在的ilbc相关(如果有)
[root@localhost ilbc]# cp usr/lib64/freeswitch/mod/mod_ilbc.so /usr/local/freeswitch/mod/     #复制mod_ilbc.so 到 /usr/local/freeswitch/mod/ 
[root@localhost ilbc]# vim /usr/local/freeswitch/mod/mod_ilbc.la                              # 写一个这个库的描述文件
dlname='mod_ilbc.so'
library_names='mod_ilbc.so mod_ilbc.so mod_ilbc.so'
old_library=''
inherited_linker_flags=' -pthread'
dependency_libs=' /usr/local/freeswitch/lib/libfreeswitch.la -L/root/freeswitch-1.4.4/libs/apr-util/xml/expat/lib /usr/local/freeswitch/lib/libexpat.la /usr/local/freeswitch/lib/libapr-1.la -lpthread -lsqlite3 -lcurl -lpcre -lspeex -lspeexdsp -ledit -ltinfo -ldl -lcrypt -lrt -lz -lm -lssl -lcrypto -ljpeg'
weak_library_names=''
current=0
age=0
revision=0
installed=yes
shouldnotlink=yes
dlopen=''
dlpreopen=''
libdir='/usr/local/freeswitch/mod'
[root@localhost ilbc]# 


启动freeswitch
[root@localhost bin]# cd /usr/local/freeswitch/bin/
[root@localhost bin]# ./freeswitch -version
FreeSWITCH version: 1.6.14~64bit ( 64bit)
[root@localhost bin]# ./freeswitch              #启动freeswitch

[email protected]> show codecs   #查看当前已经加载的编解码器
type,name,ikey
codec,ADPCM (IMA),mod_spandsp
codec,AMR,mod_amr
codec,B64 (STANDARD),mod_b64
codec,G.711 alaw,CORE_PCM_MODULE
codec,G.711 ulaw,CORE_PCM_MODULE
codec,G.722,mod_spandsp
codec,G.723.1 6.3k,mod_g723_1
codec,G.726 16k,mod_spandsp
codec,G.726 16k (AAL2),mod_spandsp
codec,G.726 24k,mod_spandsp
codec,G.726 24k (AAL2),mod_spandsp
codec,G.726 32k,mod_spandsp
codec,G.726 32k (AAL2),mod_spandsp
codec,G.726 40k,mod_spandsp
codec,G.726 40k (AAL2),mod_spandsp
codec,G.729,mod_g729
codec,GSM,mod_spandsp
codec,LPC-10,mod_spandsp
codec,OPUS (STANDARD),mod_opus
codec,PROXY PASS-THROUGH,CORE_PCM_MODULE
codec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULE
codec,RAW Signed Linear (16 bit),CORE_PCM_MODULE
codec,Speex,CORE_SPEEX_MODULE
codec,VP8 Video,CORE_VPX_MODULE
codec,VP9 Video,CORE_VPX_MODULE
25 total.
[email protected]> 

[email protected]> load mod_ilbc      #加载ilbc库
2018-03-14 13:26:50.856441 [INFO] switch_time.c:1415 Timezone reloaded 1750 definitions
2018-03-14 13:26:50.856441 [CONSOLE] switch_loadable_module.c:1540 Successfully Loaded [mod_ilbc]
2018-03-14 13:26:50.856441 [NOTICE] switch_loadable_module.c:207 Adding Codec iLBC 97 iLBC 8000hz 30ms 1ch 13330bps

+OK Reloading XML
+OK

2018-03-14 13:26:50.856441 [NOTICE] switch_loadable_module.c:207 Adding Codec iLBC 98 iLBC 8000hz 20ms 1ch 15200bps



[email protected]> show codecs   #验证加载结果
type,name,ikey
codec,ADPCM (IMA),mod_spandsp
codec,AMR,mod_amr
codec,B64 (STANDARD),mod_b64
codec,G.711 alaw,CORE_PCM_MODULE
codec,G.711 ulaw,CORE_PCM_MODULE
codec,G.722,mod_spandsp
codec,G.723.1 6.3k,mod_g723_1
codec,G.726 16k,mod_spandsp
codec,G.726 16k (AAL2),mod_spandsp
codec,G.726 24k,mod_spandsp
codec,G.726 24k (AAL2),mod_spandsp
codec,G.726 32k,mod_spandsp
codec,G.726 32k (AAL2),mod_spandsp
codec,G.726 40k,mod_spandsp
codec,G.726 40k (AAL2),mod_spandsp
codec,G.729,mod_g729
codec,GSM,mod_spandsp
codec,LPC-10,mod_spandsp
codec,OPUS (STANDARD),mod_opus
codec,PROXY PASS-THROUGH,CORE_PCM_MODULE
codec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULE
codec,RAW Signed Linear (16 bit),CORE_PCM_MODULE
codec,Speex,CORE_SPEEX_MODULE
codec,VP8 Video,CORE_VPX_MODULE
codec,VP9 Video,CORE_VPX_MODULE
codec,iLBC,mod_ilbc

26 total.

[email protected]> 


接下来设备端验证,将2个手机调为只支持ilbc编码,互打电话。测试成功!
也可以试试freeswitch的音频转码功能。

至此,问题解决。

注意:目前mod_ilbc是手动加载方式,如想自动加载,可写到freeswitch的xml配置文件中。


 

猜你喜欢

转载自my.oschina.net/u/3776585/blog/1634549
今日推荐