freeswitch通过编译方式安装

阿里云轻量服务器Ubuntu 24.04.2 LTS + freeswitch 1.10.12-release

说明:freeswitch是模块化的,如果编译的过程中报错,可以预先注释跳过。

源码下载

将代码统一下载到 /opt 目录下

shell 复制代码
# 下载FreeSWITCH源码 
git clone -b v1.10 https://github.com/signalwire/freeswitch freeswitch 
# 下载sofia-sip源码 
git clone https://github.com/freeswitch/sofia-sip 
# 下载spandsp源码 
git clone https://github.com/freeswitch/spandsp

# 下载libks源码(不需要signalwire这个的话,这个也可以不装) 
git clone https://github.com/signalwire/libks 
# 下载signalwire-c源码(不需要可以不安装) 
git clone https://github.com/signalwire/signalwire-c

安装必要依赖

有些可能也不需要

bash 复制代码
sudo 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 libavresample-dev \
    liblua5.2-dev \
    libopus-dev \
    libpq-dev \
    libshout3-dev libmpg123-dev libmp3lame-dev \
    libsndfile1-dev libflac-dev libogg-dev libvorbis-dev

安装sofia-sip

bash 复制代码
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

bash 复制代码
cd spandsp
./bootstrap.sh
./configure CFLAGS="-g -ggdb" --with-pic --prefix=/usr
make -j`nproc --all`
sudo make install
cd ..

安装libks(可选)

bash 复制代码
cd libks
cmake . -DCMAKE_INSTALL_PREFIX=/usr -DWITH_LIBBACKTRACE=1
sudo make install
cd ..

安装signalwire-c(可选)

bash 复制代码
cd signalwire-c
PKG_CONFIG_PATH=/usr/lib/pkgconfig cmake . -DCMAKE_INSTALL_PREFIX=/usr
sudo make install
cd ..

编译安装freeswitch

如果没有安装signalwire-c,可以在执行./configure后,注释modules.conf中的applications/mod_signalwire

在安装过程中提示libavformat报错,分析发现与mod_av模块相关,注释modules.conf中的applications/mod_av跳过报错

bash 复制代码
cd freeswitch
./bootstrap.sh -j
./configure
make -j`nproc`
sudo make install

启动FreeSWITCH服务

执行以上步骤后,FreeSWITCH已经被安装到/usr/local/freeswitch目录下了。

bash 复制代码
cd /usr/local/freeswitch
# 前台启动服务
bin/freeswitch
# 后台启动服务
bin/freeswitch -nc

使用linphone进行测试

不介绍linphone软件上的配置

拨打9196可以接通,但是听不到回音

开放端口

之前只在阿里云的安全规则中放行了5060端口,所以可以接通。需要在安全规则中添加16384-32768端口的UDP放行规则

端口范围 协议 备注
5060 TCP&UDP 用于 SIP 信令
16384-32768 UDP 用于 SIP、交换以及其他协议的语音或视频的数据传输

注:5060端口可以在/usr/local/freeswitch/conf/vars.xml 中修改 <X-PRE-PROCESS cmd="set" data="internal_sip_port=5060"/>

修改internal.xml

因为是跨网络,打通以后需要设置统一的sip网络/usr/local/freeswitch/conf/sip_profiles/internal.xml 将ext-rtp-ip和ext-sip-ip设置为公网地址

拨打9664不播放音乐

检查/usr/local/freeswitch/sounds没有下载音乐包

进入/opt/freeswitch文件夹,下载声音文件。执行其中一种就可以

bash 复制代码
# 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

执行完成后在/usr/local/freeswitch/sounds执行tree -L 4,效果如下图:

相关推荐
货拉拉技术29 分钟前
构建稳定的 AI Agent:Harness 工程的核心机制与实践思考
人工智能·后端·数据分析
hsfxuebao41 分钟前
Harness工程
后端·架构
暗夜行者之光44 分钟前
LangGraph 实战:构建“自我修正”的代码生成 Agent
后端
IT枫斗者枫哥1 小时前
AI返回合法JSON,字段就可信吗?给抽取结果补一道业务校验
java·人工智能·后端
IT枫斗者枫哥1 小时前
同一个requestId换了参数,为什么不能直接返回旧结果?
java·后端
溪语流沙1 小时前
Django + Vue电商项目第005讲:后端骨架|Django初始化、配置分层与DRF接入
vue.js·后端·python·django
益达是我啊1 小时前
前端工程师的 Java 后端 30 天快速入门(1)
后端
136096757231 小时前
apt-get 补的库,一次重建全没了
后端
IT枫斗者枫哥1 小时前
ORDER BY时间还会漏单?用相同时间和插入记录测一次分页
java·后端
IT枫斗者枫哥1 小时前
UPDATE影响0行,接口却返回成功:把版本冲突接回业务
java·后端