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部署相关推荐

  1. freeswitch部署及网关调试

    freeswitch部署及网关调试 目录 freeswitch部署及网关调试... - 1 - 一.freeswitch部署... - 3 - (一)基础部署... - 3 - (二)根据实际情况需求 ...

  2. freeswitch 部署测试流程

    目录 1)源码目录说明 1.conf 2.libs 3.srcipts 4.src(重要) 2)部署目录 1.conf(重要) autoload_configs 1.switch.conf.xml(优 ...

  3. freeswitch部署公网没声音挂断问题

    Freeswitch 有3个种工作模式: 默认 Proxy Media http://wiki.freeswitch.org/wiki/Proxy_Media Bypass Media http:// ...

  4. 手把手教你部署验证freeswitch(避免踩坑)

    介绍:freeswitch可集成ASR(语音识别)和TTS(文本转语音)创建智能电话机器人和用户通话,可用于问卷调查,自动催缴等业务,电话咨询服务,支持百度,科大,阿里云,腾讯等ASR系统,可以真人预 ...

  5. Freeswitch 对接 unimrcpserver ASR调用

    freeswitch 部署的系统版本:Centos6.9 x64 unimrcp 部署版本:Red Hat6.4 x86(32) ** 对接前提: freeswitch 已经编译并且安装了mod_un ...

  6. freeswitch系列五 解决xlite和freeswitch通话没有语音的问题

    1. 概述 本文解决如下问题:xlite之间已经正常的进行sip协议的交互,并且1008和1018已经呼通,但是1008和1018互相之间无法听到声音. 主要涉及如下内容: 1. 语音不通的原因分析 ...

  7. FreeSwitch公网语音对讲可以接通但没有声音问题探究

    背景 公司业务用到对讲系统,采用FreeSWITCH自己搭对讲服务器.原本有一台对讲服务器部署在华为云,因为价格贵及经常受攻击的原因,要迁移到阿里云服务器.于是,运维人员在阿里云服务器部署一个Free ...

  8. freeswitch系列四 通过实例学习sip协议的注册、呼叫、挂断流程

    1. 概述 本文通过tcpdump对真实环境里的软电话的注册.呼叫.挂断流程进行抓包,通过真实的例子学习SIP协议.本文主要包括以下方面: A. 详解软电话的注册时的SIP包和流程图 B. 详解软电话 ...

  9. freeswitch端口设置

    FreeSwitch部署到了阿里云主机上处于防火墙内,因此需要在防火墙上开启相关端口映射,否则无法接收到数据包,我开放了tcp端口后在使用xlite能连接到freeswitch但是拨号后无声音,因为部 ...

  10. [网络电话]Android CSipSimple开发实例

    [网络电话]Android CSipSimple开发实例 CSipSimple 是一款通用的支持SIP协议的互联网电话软件,可以在andriod的平板,手机上使用.支持语音编码: G.711 aLaw ...

最新文章

  1. Android Studio 3.5 之后导入第三方Library 库的方法
  2. 直观讲解一下RPC调用和HTTP调用的区别
  3. 黑帽SEO:Google为什么会屏蔽你的网站
  4. EasyTable2.1 功能更加强大,bug全面修复的html table插件!
  5. 用scheme重写Python的三大函数map reduce 和filter
  6. 如何利用css使PNG图片透明
  7. CH2-1 类型 操作 表达式
  8. HPU 第三次积分赛:阶乘之和(水题)
  9. 2017.3.9 Harry and Christmas tree 失败总结
  10. Android 一篇文章轻松搞懂什么是Callback回调
  11. 中国医科大学计算机学院,中国医科大学是一个什么水平的大学?
  12. 董路:当“边缘人”来到舞台中央
  13. InnoDB Adaptive Hash Index(AHI)
  14. Tracup:集成Bug追踪的轻量级项目管理平台
  15. 论文翻译3-视频流SR技术分析
  16. VRF proof极简理解
  17. latex写中文毕业论文(北交大博士毕业论文模版)
  18. HPUX——用户解锁
  19. 最近设计的一个无人机app的界面
  20. 帕斯卡三角形 (Pascal)

热门文章

  1. raw数据恢复之raw格式硬盘如何恢复数据?
  2. 泛泰 A850 TWRP Recovery En英/Cn简/Tw繁[2013.05.19]
  3. 第四章 选择结构程序设计习题总结
  4. 电脑计算机未输出任何信号 键盘没亮,戴尔计算机不显示信号,为什么计算机屏幕不显示...
  5. 免费的视频格式转换器哪个最好用呢?
  6. google吃豆子游戏
  7. 20+免费精美响应式Html5 网站模板01(含源码)
  8. cecore.cls.php 08cms,08cms小说系统 v1.0PHP CMS源码下载-华软网
  9. 毕业季怎么做答辩PPT?
  10. python爬取豆瓣电影影评_Python3爬虫实战:以爬取豆瓣电影为例