搭建视频会议服务器(视频会议软件方式)

zzxiexin 2 0

经群里很多人反映搭建服务器遇到问题,我这里将搭建过程重新梳理一遍,希望能有帮助,这里贴上项目总结有福利 音视频学习大纲+课件+视频资料

1. 前置条件首先你需要有一台linux服务器,windows的也可以,请自行搞定一些 简单工具应该先装好如:git、make、gcc之类的2. 安装node和npm

下载官网最新nodejs:https://nodejs.org/en/download/

wget https://nodejs.org/dist/v10.16.0/node-v10.16.0-linux-x64.tar.xz

安装

# 解压tar -xvf node-v10.16.0-linux-x64.tar.xz# 改名mv node-v10.16.0-linux-x64 nodejs# 进入目录cd nodejs/# 确认一下nodejs下bin目录是否有node和npm文件,如果有就可以执行软连接sudo ln -s /home/dds/webrtc/nodejs/bin/npm /usr/local/bin/sudo ln -s /home/dds/webrtc/nodejs/bin/node /usr/local/bin/**看清楚,上面软链接的路径是你自己创建的路径,我的路径是/home/dds/webrtc/nodejs**#查看是否安装node -v npm -v # 注意,ubuntu 有的是需要sudo,如果不想sudo,可以软链接到当前用户目录sudo ln -s /home/dds/webrtc/nodejs/bin/node /usr/bin/coturn穿透和转发服务器3.1 ubuntu安装

ubuntu的话直接用apt安装就行了

sudo apt install coturn 3.2 centos安装

centos或者其他的系统根据下面的方式进行安装

安装依赖

Ubuntu, Debian, Mint: $ sudo apt-get install libssl-dev(必须) $ sudo apt-get install libsqlite3 (or sqlite3) $ sudo apt-get install libsqlite3-dev (or sqlite3-dev) $ sudo apt-get install libevent-dev(必须) $ sudo apt-get install libpq-dev $ sudo apt-get install mysql-client $ sudo apt-get install libmysqlclient-dev $ sudo apt-get install libhiredis-devFedora: $ sudo yum install openssl-devel $ sudo yum install sqlite $ sudo yum install sqlite-devel $ sudo yum install libevent $ sudo yum install libevent-devel $ sudo yum install postgresql-devel $ sudo yum install postgresql-server $ sudo yum install mysql-devel $ sudo yum install mysql-server $ sudo yum install hiredis $ sudo yum install hiredis-devel

编译安装coturn

git clone https://github.com/coturn/coturn cd coturn ./configure make sudo make install3.3 配置相关

查看是否安装成功

## 如果能够找到就说明已经安装成功 which turnserver

根据自己的安装目录,配置文件/usr/local/etc/turnserver.conf 或者/etc/turnserver.conf

我的目录是 /usr/local/etc/turnserver.conf配置 如下

verbose fingerprint lt-cred-mech realm=test user=ddssingsong:123456 stale-nonce no-loopback-peers no-multicast-peers mobility no-cli

或者下面这个配置,只配置stun(stun-only)

listening-ip=本地iplistening-port=3478#relay-ip=0.0.0.0external-ip=外网ipmin-port=59000max-port=65000Verbosefingerprintno-stdout-logsysloguser=ddssingsong:123456no-tcpno-tlsno-tcp-relaystun-only# 下面是配置证书,不懂就问后端人员怎么用openssl生成这个cert=pem/turn_server_cert.pem pkey=pem/turn_server_pkey.pem #secure-stun

更详细的配置请看

https://github.com/ddssingsong/webrtc_server/blob/master/coturn/turnserver.conf

3.4 启动相关

# 如果按照上面的配置直接运行

turnserver# 如果没有配置上述配置文件,可采用其他运行方法/usr/local/bin/turnserver --syslog -a -f --min-port=32355 --max-port=65535 --user=dds:123456 -r dds --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v--syslog 使用系统日志-a 长期验证机制-f 使用指纹--min-port 起始用的最小端口--max-port 最大端口号--user=dds:123456 turn用户名和密码-r realm组别--cert PEM格式的证书--pkey PEM格式的私钥文件-l, --log-file,<filename> 指定日志文件-v verbose#请根据需要选择

测试地址,请分别测试stun和turn,relay代表turn

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

4. 安装webrtc服务器和浏览器端

下载 代码

# 代码检出来

git clone https://github.com/ddssingsong/webrtc_server_node.git cd webrtc_server123

修改/public/dist/js/SkyRTC-client.js,设置穿透服务器

var iceServer = { "iceServers": [ { "url": "stun:stun.l.google.com:19302" }, { "url": "stun:118.25.25.147:3478" }, { "url": "turn:118.25.25.147:3478", "username":"ddssingsong", "credential":"123456" } ] };

修改/public/dist/js/conn.js

## 最后一行

## 如果没有配wss代理

rtc.connect("ws:" + window.location.href.substring(window.location.protocol.length).split('#')[0], window.location.hash.slice(1));如果配了nginx wss代理rtc.connect("wss:" + window.location.href.substring(window.location.protocol.length).split('#')[0]+"/wss", window.location.hash.slice(1));# 后面的那个“/wss”是根据自己配的代理路径

运行

# cd到项目路径# 安装依赖npm install# 运行node server.js

其实到了这一步就可以测试客户端了,往下看获取线上部署详情

安装nginx

如果是ubuntu的话还是可以使用apt安装

sudo apt-get install nginx

centos按照下面的方式进行

安装依赖

yum install -y gcc gcc-c++ autoconf automake make zlib zlib-devel openssl openssl-devel pcre pcre-devel

编译安装nginx

wget -C http://nginx.org/download/nginx-1.12.0.tar.gztar xvf nginx-1.12.0.tar.gzcd nginx-1.12.0./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_modulemake sudo make install

生成证书,这个只是简单的生成,请慎重对待

# 移动到目录,下面会用到

cd /sudo mkdir certce cert

# 生成服务器证书key

sudo openssl genrsa -out cert.pem 1024

# 生成证书请求,需要你输入信息,一路回车就行,不要输入内容

sudo openssl req -new -key cert.pem -out cert.csr

# 生成crt证书

sudo openssl x509 -req -days 3650 -in cert.csr -signkey cert.pem -out cert.crt

修改 配置文件/usr/local/nginx/conf/nginx.conf或者/etc/nginx/nginx.conf,没有的话自己找一下

将下面的内容贴进去就行了

user www-data;worker_processes auto;pid /run/nginx.pid;include /etc/nginx/modules-enabled/*.conf;events { worker_connections 768; # multi_accept on;}http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE ssl_prefer_server_ciphers on; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; gzip on; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; #代理https upstream web { server 0.0.0.0:3000; } #代理websocket upstream websocket { server 0.0.0.0:3000; } server { listen 443; server_name localhost; ssl on; ssl_certificate /cert/cert.crt;#配置证书 ssl_certificate_key /cert/cert.key;#配置密钥 ssl_session_cache shared:SSL:1m; ssl_session_timeout 50m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 SSLv2 SSLv3; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; #wss 反向代理 location /wss { proxy_pass http://websocket/; # 代理到上面的地址去 proxy_read_timeout 300s; proxy_set_header Host $host; proxy_set_header X-Real_IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'Upgrade'; } #https 反向代理 location / { proxy_pass http://web/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;————————————————版权声明:本文为CSDN博主「ddssingsong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u011077027/article/details/86225524

开启nginx

#查看是否开启ps -ef|grep nginx#改变配置文件重启nginxsudo nginx -s reload

测试浏览器

#访问

https://serverIp#roomName如:外网:https://192.168.1.123/#123内网:http:192.168.1.123:3000#123

# 查看效果,其中roomName为进入的房间名,不同房间的用户无法互相通话

7. 测试客户端

将这个项目下下来使用 android studio 编译并安装

## 看清楚分支,项目一直在开发中,所以请使用固定分支测试,一般使用branch_nodejs分支测试,master和dev是最新代码

https://github.com/ddssingsong/webrtc_android

修改WebrtcUtil.java,要去掉界面上的地址哦

// turn and stun // 外网测试才需要 private static MyIceServer[] iceServers = { new MyIceServer("stun:stun.l.google.com:19302"), new MyIceServer("118.25.25.147:3478?transport=udp"), new MyIceServer("118.25.25.147:3478?transport=udp", "ddssingsong", "123456"), new MyIceServer("118.25.25.147:3478?transport=tcp", "ddssingsong", "123456"), }; // 外网测试 private static String WSS = "wss://47.254.34.146/wss"; //本地内网信令地址 private static String WSS = "ws://192.168.1.122:3000";————————————————版权声明:本文为CSDN博主「ddssingsong」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/u011077027/article/details/86225524好了,基本完成总结:

1、通过上面这个demo可以做很多扩展,比如视频直播、在线教学、安防监控。

2、很多开源框架都是基于这种架构模式,如Licode,jitsi。

3、这种模式以后结合VP9,H265和SVC会有很好的发展空间,不过需要时间,所以我们会继续关注。详细教程资料关注+后台私信;资料;两个字可以免费视频领取+文档+各大厂面试题 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。

标签: #搭建视频会议服务器

  • 评论列表

留言评论

 
QQ在线咨询
售前咨询电话
173-175-32776
技术支持电话
173-175-32776
嘿,欢迎咨询