本文档主要是指导从源代码安装FreeSWITCH。
准备条件
硬件
· 32-bit OS (64-bit recommended) cpu Any
· 512MB RAM (1GB recommended)
· 50MB of Disk Space
系统
WINDOWS/LINUX
本文采用Ubunbtu 16.04
源码获取
参考:https://freeswitch.org/confluence/display/FREESWITCH/Installation
目前FreeSWITCH1.4版本已经不再维护,我们以1.6版本为主。
获取源码有两种方式
- 从git库获取
git clone https://stash.freeswitch.org/scm/fs/freeswitch.git freeswitch.git
然后通过git tag选择版本,不选择默认是master版本
例如:
git checkout –b v1.2.0
- 直接下载
https://files.freeswitch.org/freeswitch-releases/
依赖库的安装
编译FreeSWITCH之前,我们需要准备好它所需要的第三方库。 这里涉及到大量的第三方库需要安装。
列举如下:
ü build-essential
ü automake
ü autoconf
ü wget
ü libtool
ü liblua-dev
ü libncurses5-dev
ü libtiff-dev
ü libjpeg-dev
ü lib1g-dev
ü libssl-dev
ü libsqlite3-dev
ü libpcre3-dev
ü libspeexdsp-dev
ü libspeex-dev
ü libcurl4-openssl-dev
ü libopus-dev
ü libldns-dev
ü libedit-dev
ü libsndfile-dev
执行sudo apt-get install 安装上述列表
Centos 使用命令yum install安装上述列表
安装完后,来到FreeSWITCH路径下,执行configure。注意观察是否报错。一般少了什么库,它会报错告诉你的,然后你在把它补上重新执行。
如果编译成功会显示下面信息
成功后执行make install安装
安装语音文件
安装完成后的提示,安装语音文件即可。
语音文件有四种品质,选择一种安装即可。
常见问题
【问题】 Configure执行成功,但是执行make的时候遇到Neither yasm nor nasm have been found.
【解答】 没有安装yasm或basn。需要安装。apt-get install yasm
【问题】编译失败mod_lua.cpp:37:17: fatal error: lua.h: No such file or directory
【解答】没有安装lua。需要安装。sudo apt-get install liblua5.3-dev。
【问题】安装lua后还是提示lua.h: No such file or directory
【解答】头文件没有找到。
在src/mod/languages/mod_lua下打开Makefile,报错信息里写了1081行,找到它。看到INCLUDE相关选项,再按图索骥找到配置的地方
然后在这个后面加上lua的头文件路径。 我的是安装在这里的,你要确认一下环境具体安装的位置。
【问题】lua头文件可以找到了,但是还是编辑挂了。
【解答】so库文件没有找到。 搜索lua库文件:
find -name "liblua.so"
找到位置后,发现存在库文件,但是缺少一个链接。
创建链接文件
ln -sf liblua5.3.so liblua.so
重新编译通过
【问题】编译mod_sndfile模块时出错:
【解答】
安装libsndfile-dev。然后重新configure在编译
【问题】安装中文语音出错
【解答】语音文件都在http://files.freeswitch.org/releases/sounds/上。 通过make执行命令时,make sounds-cn-install 会访问freeswitch网站,然后找到对应版本的语音文件。如果当前版本的语音文件未及时归档,可能存在找不到的情况。
解决的办法:
-
手动找到中文语音压缩包下载下来。
8.PNG
用root用户在/usr/local/freeswitch/sounds下解压。该路径应该是你freeswitch安装路径下的音频路径。你可以先检查以下该路径下是否有英文语音文件。确认没有问题后解压。
在去/usr/local/freeswitch/conf/lang下,该径路为各个语言的配置。可以看到有多个语言的文件夹,就是没有中文的。没有关系,我们先复制一份。 cp –r en zh 还有xml文件也要改个名字 mv en.xml cn.xml
-
编辑cn.xml。主要把英文相关改成中文相关
9.PNG
-
编辑/usr/local/freeswitch/conf/freeswitch.xml,找到<section name="languages" description="Language Management">段,加入 <X-PRE-PROCESS cmd="include" data="lang/zh/*.xml"/>
10.PNG
-
增加中文say模块的加载。 编辑/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml 去除<load module="mod_say_zh"/>的注释
11.PNG
- 设置中文为默认语言 编辑/usr/local/freeswitch/conf/vars.xml,加入以下几行
<X-PRE-PROCESS cmd="set" data="default_language=zh"/>
<X-PRE-PROCESS cmd="set" data="default_dialect=cn"/>
<X-PRE-PROCESS cmd="set" data="default_voice=sinmei"/>
- 重新加载xml. 执行reloadxml