1、安装依赖
yum install gcc gcc-c++
yum install -y wget zlib-devel libjpeg-devel freetype-devel
2、安装官方插件
yum install -y epel-release
yum install -y git alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 curl-devel libdb4-devel e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel gnutls-devel ilbc2-devel ldns-devel libcodec2-devel libcurl-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libogg-devel libsilk-devel libsndfile-devel libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libxml2-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel python-devel python-devel soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC-devel wget which yasm zlib-devel libshout-devel libmpg123-devel lame-devel rpm-build libX11-devel libyuv-devel
3、编译环境准备
freeswitch要支持音视频,就要安装相关的依赖库,这些依赖库都可以在freeswitch官网这个地址
3.1、安装cmake
tar -zvxf cmake-3.31.9.tar.gz
cd cmake-3.31.9
./bootstrap
make
make install
sudo ln -sf /usr/local/bin/cmake /usr/bin/cmake
sudo ln -sf /usr/local/bin/cpack /usr/bin/cpack
sudo ln -sf /usr/local/bin/ctest /usr/bin/ctest
注意可能会报错,
1)下载cmake失败,找不到安装包,可以手动去cmake官网下载,下载源码,上传到服务器上再执行以上安装步骤
2)执行make命令失败,缺少openssl,此时需要先安装openssl,运行以下命令,完成后再执行make及make install
yum install -y openssl openssl-devel
3.2、安装autoconf
autoconf-2.71及以上版本(http://mirrors.kernel.org/gnu/autoconf/),安装脚本如下:
tar xzvf autoconf-2.71.tar.gz
cd autoconf-2.71
./configure
make
make install
#检查
autoconf --version
3.3、安装yasm
tar -xvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make && make install
安装完毕后检查如下:
#检查
yasm --version
3.4、安装nasm
tar -zxvf nasm-2.14.tar.gz
cd nasm-2.14
./configure
make && make install
安装完毕后检查如下:
#检查
nasm -version
3.5、 安装opus
opus需要提前安装,否则可能报错。报错You must install libopus-dev to build mod_opus. Stop. 安装前需要先卸载自带的opus,执行如下脚本:
yum remove opus
安装指定版本的opus,安装脚本如下:
tar xvfz opus-1.3.1.tar.gz
cd opus-1.3.1
./configure
make
make install

安装完毕后,拷贝相关文件,脚本如下:
#cp opus.*(当前安装目录) /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/opus.* /usr/lib64/pkgconfig/
最后,重新安装libsndfile-devel
yum install libsndfile-devel
3.6 安装x264
unzip x264-master.zip
cd x264-master
./configure --prefix=/usr/local --enable-shared
make
make install
#查看是否安装成功
x264 --version
3.7 安装libks
先安装libatomic
yum -y install libatomic
再执行以下命令:
tar –zxvf libks-2.2.0.2.tar.gz
cd libks
cmake .
make
make install
3.8 安装libvpx
tar -zxvf libvpx2-2.0.0.tar.gz
cd libvpx2-2.0.0
./configure --prefix=/usr/local/libvpx --enable-pic --disable-examples --disable-unit-tests
make
make install
3.9 安装SDL2
yum -y install libX11-devel libXext-devel libXv-devel
tar -zxvf SDL2-2.0.22.tar.gz
cd SDL2-2.0.22/
./configure
make
make install
ldconfig
pkg-config --modversion sdl2
执行pkg-config --modversion sdl2失败,解决方案如下
vi ~/.bashrc
在最后一行增加以下内容:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}
退出编辑并执行以下内容
source ~/.bashrc
3.10 安装libav
tar jxvf libav-12.tar.bz2
cd libav-12.3
./configure --enable-shared --enable-libx264 --enable-gpl
make
make install
cp /usr/local/lib/libavformat.* /lib64/
ln -s /lib64/libavformat.so.57.7.2 /lib64/libavformat.so.57
ln -s /lib64/libavformat.so.57.7.2 /lib64/libavformat.so
ls -l /usr/local/lib/libavcodec*
注意:执行make时可能会报错error: ‘x264_bit_depth’ undeclared,应该是x264某个版本之后哪位大神将原来的x264_bit_depth改成了大写的X264_BIT_DEPTH,所以进入libavcodec文件夹,找到libx264.c进行编辑,把里面的x264_bit_depth全部改成X264_BIT_DEPTH(应该一共有4处地方),保存之后重新make。
3.11 安装ffmpeg
tar xzvf ffmpeg-5.1.tar.gz
cd ffmpeg-5.1
./configure --enable-shared --enable-libx264 --enable-gpl --enable-sdl2 --enable-pic
make -j$(nproc)
make install
#查看是否安装成功
ffmpeg -version
如果提示:

则执行以下操作(也可以手动修改/etc/ld.so.conf文件,增加一行:/usr/local/lib,保存后执行ldconfig)
echo '/usr/local/lib' | sudo tee /etc/ld.so.conf.d/x264.conf
sudo ldconfig
3.12 安装PortAudio
tar -zxvf pa_stable_v190700_20210406.tgz
cd portaudio
./configure
make
make install
4.下载Freeswitch 1.10.12+Spandsp+Sofia-sip
4.1 freeswitch 1.10.12下载
cd ~
git clone -b v1.10.12 https://github.com/signalwire/freeswitch
cd freeswitch
4.2 spandsp下载(下载后放入到freeswitch目录下)
注意:这里下载的是从0d2e6ac65e0e8f53d652665a743015a88bf048d4对应提交的版本。
cd ~/freeswitch
git clone https://github.com/freeswitch/spandsp.git
cd spandsp
git checkout -b specialcommit20250228 0d2e6ac65e0e8f53d652665a743015a88bf048d4
4.3 sofia-sip下载(下载后放入到freeswitch目录下)
cd ~/freeswitch
git clone https://github.com/freeswitch/sofia-sip.git
5.spandsp安装
cd ~/freeswitch/spandsp
./bootstrap.sh -j
./configure
make
make install

安装完之后执行以下命令:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:${PKG_CONFIG_PATH}
sudo ldconfig
6.sofia-sip安装
cd ~/freeswitch/sofia-sip
./bootstrap.sh
./configure
make
make install

7.freeswitch 1.10.12安装
安装之前需要先修改freeswitch下的modules.conf
#注释以下内容
#applications/mod_signalwire
#打开以下内容
xml_int/mod_xml_curl
languages/mod_python
保存后执行以下内容:
cd ~/freeswitch/
./bootstrap.sh -j
./configure
make
make -j install
上面./configure执行完毕后,会告知后续配置文件位置:

安装成功后提示:
----------------------------------------------------------------------
make[5]: Leaving directory `/root/freeswitch/src/mod/xml_int/mod_xml_rpc'
make[4]: Leaving directory `/root/freeswitch/src/mod/xml_int/mod_xml_rpc'
make[3]: Leaving directory `/root/freeswitch/src/mod'
make[3]: Entering directory `/root/freeswitch/src'
make[4]: Entering directory `/root/freeswitch/src'
make[4]: Nothing to be done for `install-exec-am'.
make[4]: Nothing to be done for `install-data-am'.
make[4]: Leaving directory `/root/freeswitch/src'
make[3]: Leaving directory `/root/freeswitch/src'
make[2]: Leaving directory `/root/freeswitch/src'
Making install in build
make[2]: Entering directory `/root/freeswitch/build'
+---------- FreeSWITCH install Complete ----------+
+ FreeSWITCH has been successfully installed. +
+ +
+ Install sounds: +
+ (uhd-sounds includes hd-sounds, sounds) +
+ (hd-sounds includes sounds) +
+ ------------------------------------ +
+ make cd-sounds-install +
+ make cd-moh-install +
+ +
+ make uhd-sounds-install +
+ make uhd-moh-install +
+ +
+ make hd-sounds-install +
+ make hd-moh-install +
+ +
+ make sounds-install +
+ make moh-install +
+ +
+ Install non english sounds: +
+ replace XX with language +
+ (ru : Russian) +
+ (fr : French) +
+ ------------------------------------ +
+ make cd-sounds-XX-install +
+ make uhd-sounds-XX-install +
+ make hd-sounds-XX-install +
+ make sounds-XX-install +
+ +
+ Upgrade to latest: +
+ ---------------------------------- +
+ make current +
+ +
+ Rebuild all: +
+ ---------------------------------- +
+ make sure +
+ +
+ Install/Re-install default config: +
+ ---------------------------------- +
+ make samples +
+ +
+ +
+ Additional resources: +
+ ---------------------------------- +
+ https://www.freeswitch.org +
+ https://freeswitch.org/confluence +
+ https://freeswitch.org/jira +
+ http://lists.freeswitch.org +
+ +
+ irc.freenode.net / #freeswitch +
+ +
+ Register For ClueCon: +
+ ---------------------------------- +
+ https://www.cluecon.com +
+ +
+-------------------------------------------------+
.=======================================================================================================.
| _ _ ____ _ ____ |
| / \ _ __ _ __ _ _ __ _| | / ___| |_ _ ___ / ___|___ _ __ |
| / _ \ | '_ \| '_ \| | | |/ _` | | | | | | | | |/ _ \ | / _ \| '_ \ |
| / ___ \| | | | | | | |_| | (_| | | | |___| | |_| | __/ |__| (_) | | | | |
| /_/ \_\_| |_|_| |_|\__,_|\__,_|_| \____|_|\__,_|\___|\____\___/|_| |_| |
| |
| ____ _____ ____ ____ __ |
| | _ \_ _/ ___| / ___|___ _ __ / _| ___ _ __ ___ _ __ ___ ___ |
| | |_) || || | | | / _ \| '_ \| |_ / _ \ '__/ _ \ '_ \ / __/ _ \ |
| | _ < | || |___ | |__| (_) | | | | _| __/ | | __/ | | | (_| __/ |
| |_| \_\|_| \____| \____\___/|_| |_|_| \___|_| \___|_| |_|\___\___| |
| |
| ____ _ ____ |
| / ___| |_ _ ___ / ___|___ _ __ ___ ___ _ __ ___ |
| | | | | | | |/ _ \ | / _ \| '_ \ / __/ _ \| '_ ` _ \ |
| | |___| | |_| | __/ |__| (_) | | | | _ | (_| (_) | | | | | | |
| \____|_|\__,_|\___|\____\___/|_| |_| (_) \___\___/|_| |_| |_| |
| |
.=======================================================================================================.
Checking module integrity in target [/usr/local/freeswitch/mod]
make[2]: Leaving directory `/root/freeswitch/build'
Making install in tests/unit
make[2]: Entering directory `/root/freeswitch/tests/unit'
make[3]: Entering directory `/root/freeswitch/tests/unit'
make[3]: Nothing to be done for `install-data-am'.
/usr/bin/mkdir -p '/usr/local/freeswitch/bin'
/bin/sh /root/freeswitch/libtool --mode=install /usr/bin/install -c switch_eavesdrop '/usr/local/freeswitch/bin'
libtool: install: /usr/bin/install -c .libs/switch_eavesdrop /usr/local/freeswitch/bin/switch_eavesdrop
make[3]: Leaving directory `/root/freeswitch/tests/unit'
make[2]: Leaving directory `/root/freeswitch/tests/unit'
make[1]: Leaving directory `/root/freeswitch'
安装完毕后,添加如下软连接:
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/
相关声音文件,安装脚本如下:
cd ~/freeswitch/
make sounds-install
make moh-install
至此,freeswtich安装完毕。
7.1运维
常用命令:
#查看freeswitch安装路径
whereis freeswitch
#查看进程号
ps -ef | grep freeswithch
#查看freeswitch端口是否被监听
netstat -anp | grep 5060
#查看freeswitch的运行状态
status(控制台模式执行)
#查看freewitch内置用户是否注册(控制台模式执行)
sofia status profile internal reg
8.补充
8.1设置fs_cli
安装好freeswitch后,修改freeswitch/conf/autoload_configs/event_socket.conf.xml,把
<param name="listen-ip" value="::"/>改为
<param name="listen-ip" value="0.0.0.0"/>
可以直接用fs_cli命令,不需要跟ip
8.2 公网通话设置
修改默认分机密码:
打开/conf/vars.xml,修改以下行的data内容
<X-PRE-PROCESS cmd="set" data="default_password=5361893"/>
修改/conf/autoload_configs中的acl.conf.xml
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<list name="lan" default="allow">
<node type="deny" cidr="192.168.42.0/24"/>
<node type="deny" cidr="35.185.177.49/32"/>
<node type="allow" cidr="114.242.221.179/32"/>
<node type="allow" cidr="223.104.40.163/32"/>
<node type="allow" cidr="8.141.126.176/32"/>
</list>
<list name="domains" default="deny">
<node type="allow" domain="$${domain}"/>
<!-- <node type="allow" cidr="192.168.0.0/24"/> -->
</list>
</network-lists>
</configuration>
打开/conf下的vars.xml,找到以下行,并编辑:
<X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=8.141.126.176"/>
<X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=8.141.126.176"/>
8.3 内网接不通或接通没声音
修改sip_profiles中的internal.xml,增加以下内容:
<param name="apply-nat-acl" value="rfc1918.auto"/>
<param name="apply-candidate-acl" value="rfc1918.auto"/>
<param name="apply-candidate-acl" value="wan.auto"/>
<param name="apply-candidate-acl" value="localnet.auto"/>
<param name="apply-candidate-acl" value="any_v4.auto"/>
8.4 呼叫延迟10秒问题解决
打开conf/dialplan/default.xml,将以下内容注释掉:
<condition field="${default_password}" expression="^1234$" break="never">
<action application="log" data="CRIT WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING "/>
<action application="log" data="CRIT Open $${conf_dir}/vars.xml and change the default_password."/>
<action application="log" data="CRIT Once changed type 'reloadxml' at the console."/>
<action application="log" data="CRIT WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING "/>
如下sleep配置注释掉或将延时值改小,单位为ms
<action application="sleep" data="10000"/>
注释方法如下,注释内容用<!-- 和 -->包起来
<!--<action application="sleep" data="10000"/>-->
</condition>
1871

被折叠的 条评论
为什么被折叠?



