说明
本文档是在https://www.freeswitch.org.cn/books/case-study/01/debian.html
基础上修改的
使用的debian12版本
root@debian:~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
编译FreeSWITCH
克隆FreeSWITCH
git clone https://github.com/signalwire/freeswitch.git
FreeSWITCH切换到稳定版分支
git checkout v1.10.12
下载依赖的库
# 下载libks源码
git clone https://github.com/signalwire/libks
# 下载sofia-sip源码
git clone https://github.com/freeswitch/sofia-sip
# 下载spandsp源码
git clone https://github.com/freeswitch/spandsp
# 下载signalwire-c源码
git clone https://github.com/signalwire/signalwire-c
安装FreeSWITCH需要的包
apt-get install -y \
build-essential cmake automake autoconf libtool libtool-bin pkg-config \
libssl-dev zlib1g-dev libdb-dev unixodbc-dev libncurses5-dev libexpat1-dev libgdbm-dev bison erlang-dev libtpl-dev libtiff5-dev uuid-dev \
libpcre3-dev libedit-dev libsqlite3-dev libcurl4-openssl-dev nasm \
libogg-dev libspeex-dev libspeexdsp-dev \
libldns-dev \
python3-dev \
libavformat-dev libswscale-dev libresample1-dev \
liblua5.2-dev \
libopus-dev \
libpq-dev \
libshout3-dev libmpg123-dev libmp3lame-dev\
libsndfile1-dev libflac-dev libogg-dev libvorbis-dev sudo
安装libks
libks的主要目的是为VoIP通信提供端到端加密
cd libks
cmake . -DCMAKE_INSTALL_PREFIX=/usr -DWITH_LIBBACKTRACE=1
make install
cd ..
安装sofia-sip
Sofia-SIP通常被嵌入其他VoIP软件平台中,作为其SIP网络连接能力和通信功能的底层模块。
cd sofia-sip
./bootstrap.sh
./configure CFLAGS="-g -ggdb" --with-pic --with-glib=no --without-doxygen --disable-stun --prefix=/usr
make -j`nproc --all`
sudo make install
cd ..
安装spandsp
Spandsp是一个开源的 VoIP/Fax 流处理和控制软件库。它主要用于以下方面:
- 语音处理:包括语音编码(G.711, G.729等)、信令(RTP, RTCP等)以及音频转码等。
- Fax处理:实现传真呼叫控制、文档传输和信令处理,支持主流Fax标准。
- DTMF检测:识别DTMF按键音,支持各种DTMF方案。
- 音频格式转换:实现音频数据格式之间的转换,如ulaw到alaw。
- RTP/RTCP:处理RTP/RTCP数据包以实现语音和传真的流控制。
- 信道编解码:实现对信道数据(如PCM)的编解码。
- DSP功能:包括音频采样、降噪、回音消除、语音活动检测等DSP算法。
cd spandsp
# 切换到一个稳定的提交hash上
git checkout 0d2e6ac
./bootstrap.sh
./configure CFLAGS="-g -ggdb" --with-pic --prefix=/usr
make -j`nproc --all`
sudo make install
cd ..
安装signalwire-c
cd signalwire-c
PKG_CONFIG_PATH=/usr/lib/pkgconfig cmake . -DCMAKE_INSTALL_PREFIX=/usr
sudo make install
cd ..
编译FreeSWITCH
# 编译安装FreeSWITCH
cd freeswitch
git checkout v1.10.12
./bootstrap.sh -j
./configure
make -j`nproc`
sudo make install
# 安装英文声音资源(可选)
# 带有sounds-install的声音文件表示提示音,比如用于通话期间的语音提示,如VoiceMail的提示音,支持TTS的提示音等
# 带有moh-install的声音文件表示在Hold状态下播放的音乐,即Music On Hold (MOH)
# CD音质的声音文件
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
cd ..
创建软连接
freeswitch
和fs_cli
较常用,我们创建下软链接。
ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch
ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
启动FreeSWITCH
/usr/local/freeswitch/bin/freeswitch
注册分机测试
我们使用Linphone进行通话测试
查看FreeSWITCH channel信息
freeswitch@debian> show channels
uuid,direction,created,created_epoch,name,state,cid_name,cid_num,ip_addr,dest,application,application_data,dialplan,context,read_codec,read_rate,read_bit_rate,write_codec,write_rate,write_bit_rate,secure,hostname,presence_id,presence_data,accountcode,callstate,callee_name,callee_num,callee_direction,call_uuid,sent_callee_name,sent_callee_num,initial_cid_name,initial_cid_num,initial_ip_addr,initial_dest,initial_dialplan,initial_context
abe0d548-b787-4bec-aab5-be81d37e9d84,inbound,2024-09-10 21:01:16,1725973276,sofia/internal/1000@192.168.0.20,CS_EXECUTE,1000,1000,192.168.0.7,9196,echo,,XML,default,opus,48000,0,opus,48000,0,,debian,1000@192.168.0.20,,1000,ACTIVE,,,,,,,1000,1000,192.168.0.7,9196,XML,default
1 total.