FreeSwitch 1.9.0 安装配置及使用MySQL管理账户,并实现视频通话

最近因为项目上的需要入手了FreeSwitch。

之前尝试过Asterisk,但个人感觉对H264的支持不是特别友好,所以用才选择了FreeSwitch。

安装FreeSwitch前的准备工作:

1、VMare上安装一个CentOS的虚拟机

安装CentOS 7:

FreeSwitch 1.9.0 安装配置及使用MySQL管理账户,并实现视频通话_第1张图片

我这边选择的配置是双核,硬盘大小20GB,内存2GB,网络连接选择桥接模式。

安装过程中选择最小安装,并配置好网络连接:

FreeSwitch 1.9.0 安装配置及使用MySQL管理账户,并实现视频通话_第2张图片

耐心等待安装完成。

安装完成后登录进入系统,输入

yum install net-tools

安装完成后即可使用ifconfig命令查看到IP地址。

使用XShell或者Putty进行远程连接。

2、关闭防火墙

//临时关闭
systemctl stop firewalld
//禁止开机启动
systemctl disable firewalld

3、安装需要的环境

首先更新一下:

yum update

然后安装FreeSwitch需要的环境: 

yum install -y git gcc-c++ autoconf automake libtool wget python ncurses-devel zlib-devel libjpeg-devel openssl-devel e2fsprogs-devel sqlite-devel libcurl-devel pcre-devel speex-devel ldns-devel libedit-devel libxml2-devel libyuv-devel opus-devel libvpx-devel libvpx2* libdb4* libidn-devel unbound-devel libuuid-devel lua-devel libsndfile-devel yasm-devel libtiff-devel yasm

好了,准备工作就到此为止!

下面就进入到下载安装FreeSwitch阶段:

1、下载FreeSwitch

//进入/usr/local/src目录
cd /usr/local/src
//下载最新版本的FreeSwitch,我这里下载到的是1.9.0版本
git clone https://freeswitch.org/stash/scm/fs/freeswitch.git
//进入FreeSwitch目录
cd /usr/local/src/freeswitch

增加mod_nuimrcp模块

编辑 vim ./build/modules.conf.in

修改 #asr_tts/mod_unimrcp 为 asr_tts/mod_unimrcp

 

2、安装odbc

因为后面会涉及到odbc的安装,所以先安装odbc

yum install -y unixODBC unixODBC-devel mysql-connector-odbc

安装完成后编辑/etc/odbcinst.ini

# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description     = ODBC for PostgreSQL
Driver          = /usr/lib/psqlodbcw.so
Setup           = /usr/lib/libodbcpsqlS.so
Driver64        = /usr/lib64/psqlodbcw.so
Setup64         = /usr/lib64/libodbcpsqlS.so
FileUsage       = 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description     = ODBC for MySQL
Driver          = /usr/lib64/libmyodbc5.so
Setup           = /usr/lib64/libodbcmyS.so
Driver64        = /usr/lib64/libmyodbc5.so
Setup64         = /usr/lib64/libodbcmyS.so
FileUsage       = 1

编辑/etc/odbc.ini

[freeswitch]
Description=MySQL realtime database
Driver=/usr/lib64/libmyodbc5.so
SERVER =数据库地址
PORT =3306
DATABASE = freeswitch
OPTION  =67108864
CHARSET = UTF8
USER = 数据库账号
PASSWORD = 数据库密码
Threading = 0

输入:isql -v freeswitch测试是否能够连通:

FreeSwitch 1.9.0 安装配置及使用MySQL管理账户,并实现视频通话_第3张图片

 3、编译FreeSwitch

在/usr/local/src/freeswitch目录下

./bootstrap.sh -j
./configure --enable-core-odbc-support  #如果读者不想使用mysql管理,只需要执行./configure即可
make
make install
//安装声音文件
make cd-sounds-install
make cd-moh-install

4、首次执行FreeSwitch

进入/usr/local/freeswitch/bin目录下

./freeswitch -nonat

 5、连接MySQL数据库

FreeSwitch默认是使用的SQLite数据库,这里我们将使用MySQL数据库来管理FreeSwitch中的账户,并实现账户之间能够互相拨打电话。

首先进入到/usr/local/freeswitch/conf/autoload_configs目录下,编辑lua.conf.xml文件

标签下添加如下的代码:


然后在/usr/local/freeswitch/scripts/下创建gen_dir_user_xml.lua文件

freeswitch.consoleLog("NOTICE","lua take the users...\n");

local req_domain = params:getHeader("domain")
local req_key = params:getHeader("key")
local req_user = params:getHeader("user")
local dbh = freeswitch.Dbh("freeswitch","数据库账号","数据库密码")
if dbh:connected() == false then
freeswitch.consoleLog("notice", "gen_dir_user_xml.lua cannot connect to database" .. dsn .. "\n")
return
end
XML_STRING =
[[

]] local my_query = string.format("select password from userinfo where username='%s' limit 1", req_user) assert (dbh:query(my_query, function(u) -- there will be only 0 or 1 iteration (limit 1) XML_STRING = [[
]] end))

编辑/usr/local/freeswitch/conf/directory/default.xml

删除如下代码


    
      
    
 

MySQL数据库中,创建freeswitch数据库,添加如下的表,并插入元素:

CREATE TABLE `userinfo`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `password` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

INSERT INTO `userinfo`(`id`, `username`, `password`) VALUES (19, '8003', '12345');
INSERT INTO `userinfo`(`id`, `username`, `password`) VALUES (20, '8004', '12345');

修改拨号计划

编辑/usr/local/freeswitch/conf/dialplan/default.xml


    
        
        
        
        
        
    

 PS:该行代码需要放在后面

在FreeSwitch控制台按F6或者输入reloadxml,此时可以使用X-Lite或者Zoiper进行测试:

账号1输入8003,密码12345,Domain输入虚拟机的IP地址

账号2输入8004,密码12345,Domain输入虚拟机的IP地址

测试互打是否能够通话。

 

6、支持视频通话

编辑/usr/local/freeswitch/conf/vars.xml


编辑/usr/local/freeswitch/conf/sip_profiles/internal.xml文件,将原有的inbound-codec-prefs和outbound-codec-prefs修改成如下:




在FreeSwitch控制台按F6或者输入reloadxml即可支持视频通话功能。

测试时使用X-Lite或者Zoiper,通话时选择视频通话,即可。

你可能感兴趣的:(a,音视频)