基于WebRTC的语音视频一对一通话系统搭建
服务器Centos安装turnserver服务
基础环境
sudo yum install -y make gcc cc gcc-c++ wget
sudo yum install -y openssl-devel libevent libevent-devel
Turn安装,使用github上的coturn构建:https://github.com/coturn/coturn
wget http://turnserver.open-sys.org/downloads/v4.5.2/turnserver-4.5.2.tar.gz
tar -xvzf turnserver-4.5.2.tar.gz
cd turnserver-4.5.2 && ./configure --prefix=/usr/local/turnserver
make
sudo make install
不要使用git clone拉取,不然你会发现报C的错误
测试是否安装成功,若有路径表示成功which turnserver
-----下面的配置为普通应用,当前系统你可以配置也可以不配置,反正用不上-----
进入配置文件夹cd /usr/local/turnserver/etc/
复制出turnserver.conf.default
为 turnserver.conf
vim编辑配置文件,shift+g跳到最后一行加上以下内容
listening-port=监听端口
listening-ip=你的内网
external-ip=你的外网
user=你的账号:你的密码
realm=域名
cli-password=你的密码(这个要加上,不然一会启动服务会报cli-password啥的)
min-port=49152
max-port=65535
防火墙把tcp和udp全部1-65535全部放开(只放3478也行,默认3478)
然后启动服务turnserver -v -r 你的公网ip:3478 -a -o -c /usr/local/turnserver/etc/turnserver.conf
查看是否在运行了 ps -ef|grep turnserver
未配置证书的报错
生成证书
openssl req -x509 -newkey rsa:2048 -keyout /usr/local/turnserver/etc/turn_server_pkey.pem -out /usr/local/turnserver/etc/turn_server_cert.pem -days 99999 -nodes
ifconfig查看网卡 修改配置文件
cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem
-----无用配置结束-----
WebRTC服务端搭建
开源仓库 https://github.com/MixinNetwork/kraken
Go环境配置此教程不讲
clone仓库,然后build对应平台kraken
然后配置config下的配置文件
config目录下coturn.service
文件放置centos服务中,先修改一下
[Unit]
Description=Coturn Daemon
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/turnserver -a -f --syslog --no-stun --listening-port 3478 --static-auth-secret=通信密码 -r kraken -v
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
安装服务并启用,可参考教程 https://www.lvtao.net/system/systemd-java-jar.htmlcp config/engine.example.toml config/engine.toml
vim engine.toml
[engine]
# the network interface to bind
interface = "eth0"
# the IP address to bind, empty allows the engine to get it from interface
address = "内网IP"
log-level = 10
# the UDP port range, leave them to 0 for default strategy
port-min = 49152
port-max = 65535
[turn]
host = "turn:公网IP:3478"
# must be identical to coturn static auth secret
secret = "通信密码"
[rpc]
port = 7000
以上两处通信密码必须一致,不然没有turn服务,客户端可能会没法找到相同的房间用户
启用服务./kraken -c config/engine.toml -s engine
如果不想暴露7000端口,可使用nginx配置ssl并反代7000端口即可
语音通讯客户端配置
仓库地址:https://github.com/MixinNetwork/kraken.fm
下载源码,修改index.js中配置即可
// 如果启用伪静态用下列配置
//const KRAKEN_API = 'https://ip:7000';
//const ROOM_PARAM = 'PATH';
//const ICE_POLICY = 'relay';
// 无伪静态的开发环境
const KRAKEN_API = 'http://ip:7000';
const ROOM_PARAM = 'QUERY';
const ICE_POLICY = 'all';
前端nginx伪静态参考
location / {
rewrite ^(.*)/([a-z0-9\_]+)$ $1/?room=$2 last;
}
版权声明:本文为原创文章,版权归 全栈开发技术博客 所有。
本文链接:https://www.lvtao.net/tool/webrtc-kraken-voice.html
转载时须注明出处及本声明