Freeswitch部署
Freeswitch部署
关闭firewalld和selinux
Docker部署Freeswitch
## git仓库拉去代码 后进入目录 执行docker build -t freeswitch:v1 .
git clone https://github.com/BetterVoice/freeswitch-container.git
依赖安装
## 安装epel源:
yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm 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 nano
## 指定动态链接库的搜索目录,在/etc/ld.so.conf.d目录下建立一个文件,文件名随便取,例如:locallib.conf,然后在locallib.conf里面添加一行/usr/local/lib
echo "/usr/local/lib" >> /etc/ld.so.conf.d/locallib.conf
安装nasm
cd /usr/local/src
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz
tar -zxvf nasm-2.14.tar.gz
cd nasm-2.14/
./configure
make && make install
安装x264
cd /usr/local/src
git clone https://git.videolan.org/git/x264.git
cd x264/
./configure --enable-shared --enable-static --disable-opencl
make && make install
cp /usr/local/lib/pkgconfig/x2* /usr/lib64/pkgconfig ##否则libav在configure时会提示ERROR:x264 not found
ldconfig
安装zlib
cd /usr/local/src
wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure
make
make install
安装libRTMP
cd /usr/local/src
wget http://rtmpdump.mplayerhq.hu/download/rtmpdump-2.3.tgz
tar -zxvf rtmpdump-2.3.tgz
cd rtmpdump-2.3
make
make install
cp /usr/local/lib/pkgconfig/librtmp.pc /usr/lib64/pkgconfig/
ldconfig
编译libav
## 下载源码包,解压后进入文件夹
cd /usr/local/src
wget https://libav.org/releases/libav-12.3.tar.gz
tar -zxvf libav-12.3.tar.gz
## 修改libavcodec/libx264.c,将“x264_bit_depth”全部替换成“X264_BIT_DEPTH”
sed -i "s/x264_bit_depth/X264_BIT_DEPTH/g" libavcodec/libx264.c
## 编译安装
./configure --enable-pic --enable-shared --enable-libx264 --enable-gpl --extra-libs="-ldl"
make
make install
./configure --enable-pic --enable-shared --enable-libx264 --enable-librtmp --enable-gpl --extra-libs="-ldl"
## 复制引用库
cp /usr/local/lib/pkgconfig/libavcodec.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavdevice.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavfilter.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavformat.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavresample.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libavutil.pc /usr/lib64/pkgconfig/
cp /usr/local/lib/pkgconfig/libswscale.pc /usr/lib64/pkgconfig/
ldconfig
安装cmake
## 若通过yum已经安装cmake,应该卸载系统的低版本cmake
yum remove cmake -y
## 源文件都下载放到/usr/local/src目录
cd /usr/local/src
wget https://cmake.org/files/v3.14/cmake-3.14.0.tar.gz
tar -zxvf cmake-3.14.0.tar.gz
cd cmake-3.14.0
./configure
make
make install
安装libks
cd /usr/local/src
yum install libatomic -y
git clone https://github.com/signalwire/libks.git
cd libks
git reset --hard origin/master
git checkout 1fde90a
cmake .
make
make install
安装signalwire-c
cd /usr/local/src
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c/
git reset --hard origin/master
git checkout 45b9c11
cmake .
make
make install
ln -sf /usr/local/lib64/pkgconfig/signalwire_client.pc /usr/lib64/pkgconfig/signalwire_client.pc
安装lua5.2以下版本
## 源文件都下载放到/usr/local/src目录 看个人喜好
cd /usr/local/src
wget https://www.lua.org/ftp/lua-5.1.4.tar.gz
tar -zxvf lua-5.1.4.tar.gz
cd lua-5.1.4/
yum install readline-devel -y
make linux
make install
编译freeswitch
Git获取源码包
cd /usr/local/src
git clone https://github.com/signalwire/freeswitch.git
cd freeswitch/
git reset --hard origin/master
git checkout f7bdd38
修改modules.conf.in文件,增加mod_nuimrcp模块
nano ./build/modules.conf.in
修改 #applications/mod_av为applications/mod_av
修改 #asr_tts/mod_unimrcp 为 asr_tts/mod_unimrcp
修改 #endpoints/mod_rtmp 为 endpoints/mod_rtmp
编译安装
./bootstrap.sh -j
./configure --enable-core-odbc-support
make
make install
复制引用库
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
安装声音文件
make cd-sounds-install
make cd-moh-install
安装lua5.2及以上版本
源文件都下载放到/usr/local/src目录
cd /usr/local/src
wget https://www.lua.org/ftp/lua-5.3.5.tar.gz
tar -zxvf lua-5.3.5.tar.gz
cd lua-5.3.5/
yum -y install readline-devel
make linux
make install
下载之后运行lua –v可以发现版本还是5.1.4,需要手动删除并替换
cd /usr/bin
rm -rf lua luac
ln -s /usr/local/bin/lua /usr/bin/lua
ln -s /usr/local/bin/luac /usr/bin/luac
运行Freeswitch前需要修改的配置
加载mod_av和mod_rtmp
## 如果需要程序运行时自动加载模块,需要修改程序的配置文件,位置在/usr/local/freeswitch/conf/autoload_configs/modules.conf.xml文件
大约104行 <load module="mod_av"/> ,把注释去掉,让它生效。将会自动加载mod_av模块。
大约49行 <load module="mod_rtmp"/> ,把注释去掉,让它生效。将会自动加载mod_rtmp模块。
更改Freewitch默认登入密码
修改/usr/local/freeswitch/conf/vars.xml,大约15行<X-PRE-PROCESS cmd="set" data="default_password=1234"/>
修改为<X-PRE-PROCESS cmd="set" data="default_password=自定义密码"/>
Freewitch支持视频通话
修改/usr/local/freeswitch/conf/vars.xml
大约258和259行,检查global_codec_prefs和outbound_codec_prefs中是否有H264。如下两行:<X-PRE-PROCESS cmd="set" data="global_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8"/><X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=OPUS,G722,PCMU,PCMA,H264,VP8"/>
连接MySQL数据库
首先进入到/usr/local/freeswitch/conf/autoload_configs目录下,编辑lua.conf.xml文件
## 在<setting> 标签下添加如下的代码: ## 不读数据库 不用添加<param name="xml-handler-script" value="gen_dir_user_xml.lua"/> <param name="xml-handler-bindings" value="directory"/>
然后在/usr/local/freeswitch/scripts/下创建gen_dir_user_xml.lua文件
写入如下内容
local req_domain = params:getHeader("domain")
local req_user = params:getHeader("user")
local static_password = "hicloudmtxy123!"
local static_context = "default"
local len = #req_user
if len ~= 11 then
static_password = "fsdhjhfjshj@jkdffjfj*dfhdjfh&hhf#"
endXML_STRING =
[[<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type=" freeswitch/xml">
<section name="directory">
<domain name="]] .. req_domain .. [[">
<user id="]] .. req_user .. [[">
<params>
<param name="password" value="]] .. static_password .. [["/>
<param name="dial-string" value="{sip_invite_domain=${dialed_domain},
presence_id=${dialed_user}@${dialed_domain}}${sofia_contact(${dialed_user}@${dialed_domain})}"/>
</params>
<variables>
<variable name="user_context" value="]] .. static_context .. [["/>
</variables>
</user>
</domain>
</section>
</document>]]
编辑/usr/local/freeswitch/conf/directory/default.xml
## 注释如下代码<!--group name="default"--><!--users--><!--X-PRE-PROCESS cmd="include" data="default/*.xml"/--><!--/users--> <!--/group-->
打开/usr/local/freeswitch/conf/dialplan/default.xml文件
修改如下内容,好让所有的拨号通过以下的条件
## 修改Local_Extension节点<extension name="Local_Extension"><condition field="destination_number" expression="^(1\d+)$">
## 修改nb_conferences节点<extension name="nb_conferences"><condition field="destination_number" expression="^(3\d+)$">
打开/usr/local/freeswitch/conf/dialplan/public.xml文件
## 修改如下内容,好让所有的拨号通过以下的条件<extension name="public_extensions"><condition field="destination_number" expression="^(1\d+)$">
启动Freeswitch
Freeswitch部署相关推荐
- freeswitch部署及网关调试
freeswitch部署及网关调试 目录 freeswitch部署及网关调试... - 1 - 一.freeswitch部署... - 3 - (一)基础部署... - 3 - (二)根据实际情况需求 ...
- freeswitch 部署测试流程
目录 1)源码目录说明 1.conf 2.libs 3.srcipts 4.src(重要) 2)部署目录 1.conf(重要) autoload_configs 1.switch.conf.xml(优 ...
- freeswitch部署公网没声音挂断问题
Freeswitch 有3个种工作模式: 默认 Proxy Media http://wiki.freeswitch.org/wiki/Proxy_Media Bypass Media http:// ...
- 手把手教你部署验证freeswitch(避免踩坑)
介绍:freeswitch可集成ASR(语音识别)和TTS(文本转语音)创建智能电话机器人和用户通话,可用于问卷调查,自动催缴等业务,电话咨询服务,支持百度,科大,阿里云,腾讯等ASR系统,可以真人预 ...
- Freeswitch 对接 unimrcpserver ASR调用
freeswitch 部署的系统版本:Centos6.9 x64 unimrcp 部署版本:Red Hat6.4 x86(32) ** 对接前提: freeswitch 已经编译并且安装了mod_un ...
- freeswitch系列五 解决xlite和freeswitch通话没有语音的问题
1. 概述 本文解决如下问题:xlite之间已经正常的进行sip协议的交互,并且1008和1018已经呼通,但是1008和1018互相之间无法听到声音. 主要涉及如下内容: 1. 语音不通的原因分析 ...
- FreeSwitch公网语音对讲可以接通但没有声音问题探究
背景 公司业务用到对讲系统,采用FreeSWITCH自己搭对讲服务器.原本有一台对讲服务器部署在华为云,因为价格贵及经常受攻击的原因,要迁移到阿里云服务器.于是,运维人员在阿里云服务器部署一个Free ...
- freeswitch系列四 通过实例学习sip协议的注册、呼叫、挂断流程
1. 概述 本文通过tcpdump对真实环境里的软电话的注册.呼叫.挂断流程进行抓包,通过真实的例子学习SIP协议.本文主要包括以下方面: A. 详解软电话的注册时的SIP包和流程图 B. 详解软电话 ...
- freeswitch端口设置
FreeSwitch部署到了阿里云主机上处于防火墙内,因此需要在防火墙上开启相关端口映射,否则无法接收到数据包,我开放了tcp端口后在使用xlite能连接到freeswitch但是拨号后无声音,因为部 ...
- [网络电话]Android CSipSimple开发实例
[网络电话]Android CSipSimple开发实例 CSipSimple 是一款通用的支持SIP协议的互联网电话软件,可以在andriod的平板,手机上使用.支持语音编码: G.711 aLaw ...
最新文章
- Android Studio 3.5 之后导入第三方Library 库的方法
- 直观讲解一下RPC调用和HTTP调用的区别
- 黑帽SEO:Google为什么会屏蔽你的网站
- EasyTable2.1 功能更加强大,bug全面修复的html table插件!
- 用scheme重写Python的三大函数map reduce 和filter
- 如何利用css使PNG图片透明
- CH2-1 类型 操作 表达式
- HPU 第三次积分赛:阶乘之和(水题)
- 2017.3.9 Harry and Christmas tree 失败总结
- Android 一篇文章轻松搞懂什么是Callback回调
- 中国医科大学计算机学院,中国医科大学是一个什么水平的大学?
- 董路:当“边缘人”来到舞台中央
- InnoDB Adaptive Hash Index(AHI)
- Tracup:集成Bug追踪的轻量级项目管理平台
- 论文翻译3-视频流SR技术分析
- VRF proof极简理解
- latex写中文毕业论文(北交大博士毕业论文模版)
- HPUX——用户解锁
- 最近设计的一个无人机app的界面
- 帕斯卡三角形 (Pascal)
热门文章
- raw数据恢复之raw格式硬盘如何恢复数据?
- 泛泰 A850 TWRP Recovery En英/Cn简/Tw繁[2013.05.19]
- 第四章 选择结构程序设计习题总结
- 电脑计算机未输出任何信号 键盘没亮,戴尔计算机不显示信号,为什么计算机屏幕不显示...
- 免费的视频格式转换器哪个最好用呢?
- google吃豆子游戏
- 20+免费精美响应式Html5 网站模板01(含源码)
- cecore.cls.php 08cms,08cms小说系统 v1.0PHP CMS源码下载-华软网
- 毕业季怎么做答辩PPT?
- python爬取豆瓣电影影评_Python3爬虫实战:以爬取豆瓣电影为例