webrtc 快速搭建 视频通话 视频会议
webrtc 快速搭建 视频通话 视频会议
- 1
- 2 安装node和npm
- 3准备工作
- 4 安装libevent
- 5 安装coturn(turn服务器)穿透和转发服务器
- 5.1 安装 coturn
- 5.2 生成用户
- 5.3 修改配置文件
- 5.4 开启3478的tcp和udp端口
- 5.5 开启服务
- 5.6 测试turn服务器
- 6 安装webrtc服务器和浏览器端
- 7 nginx配置
1
Android:https://github.com/ddssingsong/webrtc_android
Node服务器:https://github.com/ddssingsong/webrtc_server_node
Java服务器:https://github.com/ddssingsong/webrtc_server_java/tree/nodejs_copy
java版需要看清楚分支是:nodejs_copy
2 安装node和npm
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 -C /usr/local
# 改名
mv node-v10.16.0-linux-x64 nodejs
# 进入目录
cd nodejs/
# 确认一下nodejs下bin目录是否有node和npm文件,如果有就可以执行软连接
sudo ln -s /usr/local/nodejs/bin/npm /usr/local/bin/
sudo ln -s /usr/local/nodejs/bin/node /usr/local/bin/node -v
npm -v
3准备工作
yum -y install openssl-devel
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
生成了key,并保存再 /etc/turn_server_pkey.pem;
生成了cert,并保存再 /etc/turn_server_cert.pem;
有效期99999天。
如果报错: openssl error while loading shared libraries: libssl.so.1.1
ln -s /usr/local/lib64/libssl.so.1.1 /usr/lib64/libssl.so.1.1
ln -s /usr/local/lib64/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
4 安装libevent
这是一个c的扩展库
Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 select 和 kqueue 等;支持 I/O,定时器和信号等事件;注册事件优先级。Libevent 已经被广泛的应用,作为底层的网络库;比如 memcached、 Vomit、 Nylon、 Netchat等
wget --no-check-certificate https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar -zxvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable/
./configure
make
make install
ls -al /usr/local/lib | grep libevent
5 安装coturn(turn服务器)穿透和转发服务器
5.1 安装 coturn
ubuntu安装
sudo apt install coturn
centos安装
wget --no-check-certificate https://github.com/coturn/coturn/archive/4.5.1.1.tar.gz
tar -zxvf 4.5.1.1.tar.gz
cd coturn-4.5.1.1
./configure
make
make install
5.2 生成用户
turnadmin -a -u chr -p 11111 -r xiaosi.com
上面的命令,将创建用户chr,密码为11111 ,同时指定realm为xiaosi.com,大家根据实际情况修改(包括那个xiaosi.com都是随便写)
5.3 修改配置文件
cd /usr/local/etc ##去到配置文件目录
cp turnserver.conf.default turnserver.conf
vim turnserver.conf
里面都是注释,直接再最下面插入
#与前ifconfig查到的网卡名称一致
relay-device=eth0
#内网IP
listening-ip=10.0.8.3
#公网IP
external-ip=119.91.104.48
#用户名密码,创建IceServer时用
user=chr:11111
#一般与turnadmin创建用户时指定的realm一致
realm=xiaosi.com
#端口号
listening-port=3478
#不开启会报CONFIG ERROR: Empty cli-password, and so telnet cli interface is disabled! Please set a non empty cli-password!错误
cli-password=qwertycert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
5.4 开启3478的tcp和udp端口
firewall-cmd --zone=public --add-port=3478/udp --permanent
firewall-cmd --zone=public --add-port=3478/tcp --permanent
firewall-cmd --reload查看端口是否开放
firewall-cmd --zone=public --query-port=3478/tcp
firewall-cmd --zone=public --query-port=3478/udp
5.5 开启服务
需要注意的是,-r参数后面是上一步的-r的值
turnserver -a -f -r xiaosi.com
然后ctrl+C退出,使用 -o 参数后台启动
turnserver -a -o -f -r xiaosi.com
5.6 测试turn服务器
webrtc-samples官网提供了一个测试用的地址
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
进去之后是这个样子
添加turn服务器
同理,添加两个,一个stun,一个turn,
测试
6 安装webrtc服务器和浏览器端
git clone https://github.com/ddssingsong/webrtc_server_node.git
cd webrtc_server
public/dist/js/SkyRTC-client.js,设置穿透服务器
vim public/dist/js/SkyRTC-client.js
vim 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”是根据自己配的代理路径
7 nginx配置
mkdir /cert
openssl genrsa -out cert.pem 1024
openssl req -new -key cert.pem -out cert.csr
openssl x509 -req -days 3650 -in cert.csr -signkey cert.pem -out cert.crt
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;}}
}
测试浏览器
#访问
https://serverIp#roomName如:
外网:https://192.168.1.123/#123
内网:http:192.168.1.123:3000#123
查看效果,其中roomName为进入的房间名,不同房间的用户无法互相通话
测试客户端
将这个项目下下来使用 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";
webrtc 快速搭建 视频通话 视频会议相关推荐
- webrtc 快速搭建 视频通话 视频会议 (亲测半个小时搭建成功)
今日名言 我相信每个赤诚忠厚的孩子,都曾在心底向父母许下孝的宏愿,相信来日方长,相信水到渠成,相信自己必有功成名就衣锦还乡的那一天,可以从容尽孝. 可惜人们忘了,忘了时间的残酷,忘了人生的短暂,忘了世 ...
- 如何使用Intel CS for WebRTC 快速搭建实时音视频通讯系统
如何使用Intel CS for WebRTC 快速搭建实时音视频通讯系统 Intel CS for WebRTC是一套完整的WebRTC的通讯架构套件,包括了服务端软件和客户端SDK,其中客户端SD ...
- Webrtc半小时搭建视频通话 视频会议
前言 经群里很多人反映搭建服务器遇到问题,我这里将搭建过程重新梳理一遍,希望能有帮助 这里贴上项目地址 android端:https://github.com/ddssingsong/webrtc_a ...
- 从入门到进阶|如何基于WebRTC搭建一个视频会议
文|网易智慧企业流媒体服务器天团 导读:疫情期间,视频会议等远程办公产品备受青睐,众多互联网玩家切入视频会议市场,加剧市场竞争.但是,产品虽多,能够带来稳定可靠体验的产品却凤毛麟角,它的难点在哪里?视 ...
- 基于WebRTC的音视频通话服务器搭建
Webrtc服务器搭建后台项目地址 java项目:https://github.com/androidtencent/WebRtcJavaWeb NodeJs项目 : https://github.c ...
- 学信网:研究生云复试平台快速搭建上线
通过覆盖全球的音视频通信服务,支撑学信网视频面试稳定运行和效率提升. 案例简介 研究生复试工作碰到疫情,各大院校先后发布复试流程调整通知,将复试工作从线下搬到了线上,这也是历史上的第一次.要在短期内完 ...
- WebRtc实现多人视频会议以及视频录制上传
1.前言 最近公司做的一个项目需求是实现多人视频会议聊天,查阅资料,决定使用HTML5新支持的WebRtc来作为视频通讯.客户端使用支持HTML5浏览器即可,如chrome,服务器段需要提供两个主要的 ...
- 抓住语音社交风口,1天快速搭建语音聊天室
语音聊天室孵化 一起KTV.众人大合唱.语音开黑.狼人杀.剧本杀.多人配音.观影.语音电台.相亲联谊社交等,一般都是在语音聊天室中进行,那么语音聊天室产品如此火热的原因有哪些呢? 一对一社交适用于朋友 ...
- 一文学会快速搭建Janus服务端
1.概述 想要了解Janus,首先需要知道WebRTC以及Janus和WebRTC之间的关系,本文将会对这些内容做简单的介绍,同时也会介绍一下Janus的架构,Janus可以实现的功能,并展示如何快速 ...
- Android WebRTC+SRS/ZLM视频通话(5):Android使用WebRTC从SRS/ZLMediaKit拉流
Android WebRTC+SRS/ZLM视频通话(5):Android使用WebRTC从SRS/ZLMediaKit拉流 来自奔三人员的焦虑日志 接着上一章内容,继续来记录Android是如何使用 ...
最新文章
- Spring.Net Aop
- First day in 聚美
- python使用tomorrow实现多线程
- JavaScript判断一个变量是对象还是数组
- zoj 3811 untrusted patrol
- 使用vrep给某个模型加dummy的一点小经验
- android libbfaac.so,Android中Json数据读取与创建
- vscode 离线安装python插件_vscode for Python插件下载-Visual Studio Code Python插件下载0.9.1 官方版-西西软件下载...
- postgresql分页用法_postgresql分页数据重复问题的深入理解
- MySQL之InnoDB存储引擎-架构
- Oracle 11G R2(11.0.2.4.0) RAC打PSU(11.2.0.4.11.2.0.4.171017)
- caj转word怎么进行转换
- win7安装镜像注入USB3.0,NVMe驱动
- Flink Event Time , Processing Time 和 Ingestion Time概念
- jfinal jboot 拦截器过滤文件上传请求 和 跨域解决方法
- seo优化教程-免费SEO优化详细教程
- oracle 空值排序,排在最前面或者最后面
- 中国碱性电解二氧化锰市场行业动态与投资规划分析报告2022-2028年
- 【ST开发板评测】Nucleo-F411RE开箱报告
- 排球计分系统java_排球计分系统|网世技术排球计分系统下载v1.0官方版 - 欧普软件下载...
热门文章
- Spark 练习之疫情分析
- java发展观_科学发展观的第一要义是以人为本。
- 征途服务器 文件夹需手,手游新征途手工架设服务端+配套双客户端+架设流程+服务器部署文档等...
- [NOI Online 2021 入门组] 切蛋糕
- [ZT]调侃、反讥与诡辩
- .doc文件不显示word图标的解决方法
- 境外诈骗,最新来自senegal的邮件诈骗
- 计算机服务器组装,一台家用虚拟化测试服务器组装
- mac的 tr命令_tr命令 - Holy_Shit - 博客园
- [转载] 胡锡进:5000亿买一包爆米花 我不想让我的国家这样