热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Webrtc半小时搭建视频通话视频会议

前言经群里很多人反映搭建服务器遇到问题,我这里将搭建过程重新梳理一遍,希望能有帮助这里贴上项目地址android端:https:git

前言
经群里很多人反映搭建服务器遇到问题,我这里将搭建过程重新梳理一遍,希望能有帮助

这里贴上项目地址

android端:https://github.com/ddssingsong/webrtc_android

服务器和浏览器端:https://github.com/ddssingsong/webrtc_server

文章目录
前言
1.前置条件
2. 安装node和npm
3. coturn穿透和转发服务器
4. 安装webrtc服务器和浏览器端
5. 安装nginx
6. 测试浏览器
7. 测试客户端
8. 好了,基本完成
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/

3. coturn穿透和转发服务器
这里说一下,ubuntu的话直接用apt安装就行了

# sudo apt install coturn 

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

1.安装依赖

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      

2.编译安装coturn

# git clone https://github.com/coturn/coturn 
# cd coturn 
# ./configure 
# make 
# sudo make install

3.查看是否安装

# which turnserver

4.配置文件/usr/local/etc/turnserver.conf 或者/etc/turnserver.conf

# 生成安全访问密码
# turnadmin -k -u ddssingsong -r north.gov -p 123456# 生成了这个
0xfb76c57e823de97df580e573437ef54a

/usr/local/etc/turnserver.conf如下配置

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


更详细的配置请看

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

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

listening-ip=本地ip
listening-port=3478#relay-ip=0.0.0.0
external-ip=外网ipmin-port=59000
max-port=65000Verbose
fingerprintno-stdout-log
syslogcert=pem/turn_server_cert.pem #这两个玩意请自行生成
pkey=pem/turn_server_pkey.pem #user=demo:demono-tcp
no-tls
no-tcp-relay
stun-only
#secure-stun

5.启动

# 如果按照上面的配置直接运行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, 指定日志文件
-v verbose#请根据需要选择

6.测试地址,请分别测试stun和turn

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

在这里插入图片描述

4. 安装webrtc服务器和浏览器端
1.下载 代码

# 代码检出来
# git clone https://github.com/ddssingsong/webrtc_server.git
# cd webrtc_server

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"}]};

3.修改/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”是根据自己配的代理路径

4.运行

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

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

客户端测试可以不使用nginx配置代理,只需要使用ws即可

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

# sudo apt-get install nginx

centos按照下面的方式进行

1.安装依赖

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

2.编译安装nginx

# wget -C http://nginx.org/download/nginx-1.12.0.tar.gz
# tar xvf nginx-1.12.0.tar.gz
# cd nginx-1.12.0
# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# make
# sudo make install

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

# 移动到目录,下面会用到
cd /
sudo mkdir cert
ce 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


4.修改 配置文件/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: POODLEssl_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/*;#代理httpsupstream web {server 0.0.0.0:3000; }#代理websocketupstream 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;}}
}

5.开启nginx

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


6. 测试浏览器

#访问https://serverIp#roomName如:
外网:https://192.168.1.123/#123
内网:http:192.168.1.123:3000#123# 查看效果,其中roomName为进入的房间名,不同房间的用户无法互相通话


7. 测试客户端
 

# 将这个项目下下来使用 android studio 编译并安装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";

8. 好了,基本完成

在这里插入图片描述

在这里插入图片描述


推荐阅读
  • 本文介绍了在Ubuntu 11.10 x64环境下安装Android开发环境的步骤,并提供了解决常见问题的方法。其中包括安装Eclipse的ADT插件、解决缺少GEF插件的问题以及解决无法找到'userdata.img'文件的问题。此外,还提供了相关插件和系统镜像的下载链接。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Linux一键安装web环境全攻略
    摘自阿里云服务器官网,此处一键安装包下载:点此下载安装须知1、此安装包可在阿里云所有Linux系统上部署安装,此安装包包含的软件及版本为& ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 本文讨论了在Linux系统中,使用chown命令将django项目目录下的static目录的拥有者从root改为eureka的问题。作者尝试了多种命令,包括chown和sudo chown等,但都没有成功修改拥有者。文章提供了相关目录的权限信息,并补充了项目所在磁盘和操作系统的信息。 ... [详细]
  • svnWebUI:一款现代化的svn服务端管理软件
    svnWebUI是一款图形化管理服务端Subversion的配置工具,适用于非程序员使用。它解决了svn用户和权限配置繁琐且不便的问题,提供了现代化的web界面,让svn服务端管理变得轻松。演示地址:http://svn.nginxwebui.cn:6060。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 本文介绍了在Ubuntu系统中清理残余配置文件和无用内容的方法,包括清理残余配置文件、清理下载缓存包、清理不再需要的包、清理无用的语言文件和清理无用的翻译内容。通过这些清理操作可以节省硬盘空间,提高系统的运行效率。 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • linux qt打开常用文件格式,设置Linux Qt文件默认打开方式为QtCreator
    Linux自定义文件打开方式也可参照文本抱歉,本文前段时间写的ubuntu下的Qt工程文件默认打开方式是不好用的,因为其他的文本文件也会受到影响,强迫症患者,每次打开Qt工程都是先 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
author-avatar
陈宥治政和瑋男
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有