Centos7.2+Coturn+SignalMaster 搭建WebRTC进行H5直播
第一次写博客,主要是记录一下自己的收获,如果能帮助到有缘人也算是打击了万恶的资本家
一、介绍
Coturn
Coturn是内网穿透服务器,因为webrtc是实时互动直播技术,所以首选web,但web又是单方向通信,服务器无法直接访问到客户端,怎么办? 那么就使用内网穿透进行搭桥,可以让服务器找到客户端。
SignalMaster
SignalMaster 是信令服务器,现在解决了内网穿透的问题,那么下一步解决的就是流媒体服务器,其实webrtc也是通过推流、拉流的方式实现的,所以就要有一个中间的服务器,SignalMaster就可以理解成这个中间的服务器。
以上理解仅仅是个人见解,不代表任何第三方,不喜勿喷(反正咱的能用)
二、环境介绍
服务器使用阿里云的,服务器配置:1H2G 1Mbs ; 系统是 Centos7.2 。这个服务器是我个人的一个测试服务器,就是没事的时候瞎研究搞的一个。
域名是在阿里云经过备案的,ssl正式是阿里云的免费证书
看网上其他人的教程,说的是谷歌浏览器要用https请求协议,火狐可以使用http。所以为了兼容火狐和谷歌,这里使用https证书进行搭建(反正https也不要钱)
三、开始搭建
系统要个干净的,重做完系统的,因为Linux系统我理解的还是太少,所以就只能按部就班的去操作
3.1、Coturn搭建
安装openssl
yum install -y openssl openssl-devel
安装libevent
yum install -y libevent-devel
安装git
yum install -y git
安装node
yum install -y nodejs
安装npm
#切换到下载位置
cd /usr/local
#下载node14
wget https://npm.taobao.org/mirrors/node/latest-v14.x/node-v14.6.0-linux-x64.tar.gz
#解压node
tar -zxvf node-v14.6.0-linux-x64.tar.gz
#名字太长给他一个重命名
mv node-v10.14.1node-v14.6.0-linux-x64 node-v14.6.0
#编辑环境变量
vi /etc/profile
#把node添加到环境变量里面
export NODE_HOME=/usr/local/node-v14.6.0
export PATH=$PATH:$NODE_HOME/bin
#刷新环境变量
source /etc/profile
下载Coturn 直接从国内 的gitee下载,不要从github下载,我试过github上面的编译失败老版本的可以,但是github下载主要看脸
cd /homegit clone https://gitee.com/dation/coturn.git
编译并安装Coturn
cd coturn
./configure
make && make install
查看是否编译成功
which turnserver
看到这个就表示编译并且安装成功
使用openssl生成证书
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
命令自行百度,我也不懂
可以自行切换到/etc目录下查看这两个问价你是否存在或者使用
ls -la /etc/turn_*
命令进行查看
配置coturn
#切换到/usr/local/etc目录下
cd /usr/local/etc
#复制 turnserver.conf.default 并且命名为 turnserver.conf
cp turnserver.conf.default turnserver.conf#cp /usr/local/etc turnserver.conf.default turnserver.conf centos这样操作会报错,不知道为啥
查看本机内网IP
ifconfig
eth0当中的172.28.17.47就是本机的内网IP地址
编辑turnserver.conf
vim turnserver.conf
编辑命令怎么用自行百度
在文件的最下方添加以下配置信息
listening-device=eth0 # 刚刚查到的网卡名称
listening-port=3478 # Conturn 监听的端口号
tls-listening-port=5349
listening-ip=xxx.xx.xx.xx # 内网IP
relay-device=eth0 # 刚刚查到的网卡名称
relay-ip=xxx.xx.xx.xx # 内网IP
min-port=49512
max-port=65535
external-ip=x.xxx.xx.x/xxx.xx.xx.xx # 公网IP/内网IP
fingerprint
lt-cred-mech
realm=cyky.158xxx5.com # 域名不要抄写这个,用自己准备的域名
user=neu:123456 # 用户名:密码
stale-nonce
no-loopback-peers
no-multicast-peers
mobility
no-cli
cert=/etc/turn_server_cert.pem # 刚刚生成的签名证书
pkey=/etc/turn_server_pkey.pem
启动Coturn
turnserver -o -a -f -r ronz -c /usr/local/etc/turnserver.conf
查看启动情况
turnutils_stunclient -p 3478 turnserver # turnserver 为公网IP
#如果你的公网地址是:10.10.12.112 那么命令就应该是:
#turnutils_stunclient -p 3478 10.10.12.112
看到以下提示表示stun 启动成功
turnutils_uclient -v -t -T -W 123456 turnserver # -W 是我们上面在配置文件中配置的密码
这个我的一直没有成功,不知道什么原因,但是不影响使用。
到这里Coturn已经搭建完成了。
3.2 搭建信令服务器
下载SignalMaster
cd /home
git clone https://gitee.com/huangleizzz/signalmaster.git
依然从gitee上下载,国内速度更快
SignalMast安装依赖
cd signalmaster
npm install
修改配置文件
vim config/development.json
配置SignalMast
{"isDev": true,"server": {"port": 8888,"/* secure */": "/* whether this connects via https */","secure": true,"key": "/usr/lab_project/4666031_ronz.top.key", "cert": "/usr/lab_project/4666031_ronz.top.pem","password": null},"rooms": {"/* maxClients */": "/* maximum number of clients per room. 0 = no limit */","maxClients": 0},"stunservers": [{"urls": "stun:10.10.12.112:3478"}],"turnservers": [{"urls": ["turn:10.10.12.112:3478"],"username": "neu","credential": "123456","expiry": 86400,"secret": "123123were"}]
}
把这里面的10.10.12.112替换成你实际的公网IP
说明:
server.port: 信令服务器监听的端口号
server.secure: 连接是否由 HTTPS 发起
server.key: 自己申请的 SSL 的私钥(.key 文件)所在的路径
server.cert: 自己申请的 SSL 证书(.pem 文件)所在的路径
stunservers.urls: stun 服务器的地址
turnservers.urls: turn 服务器的地址
turnservers.username: 上面配置的 turnserver 的用户名
turnservers.credential : 上面配置的 turnserver 的密码
启动
npm start
说明启动成功
访问测试
打开谷歌浏览器,输入 https://10.10.12.112:8888/socket.io/
10.10.12.112 替换成自己的服务器公网IP
如果在浏览器当中看到
表示已经 SignalMaster 信令服务器搭建成功。
但是现在这个情况看着是不会有任何问题,但是当测试系统运行的时候可能会有一个报错,
报错的位置在socket.io.js的111行,这个时候把foreach改成for就可以了。因为没有错误截图,所以就不放图片了。
最后搭建一个测试版本的webrtc测试一下
下载SimpleWebRTC(有能力的可以自己写一个demo)
cd /homegit clone https://gitee.com/huangleizzz/SimpleWebRTC.git
安装依赖
npm install
修改源码
vim SimpleWebRTC/out/simplewebrtc-with-adapter.bundle.js
vim SimpleWebRTC/test/index.html
<!-- 替换这条语句中 src 的链接,google速度会慢,当然替换成本地jquery也是可以的 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<!-- 将上面的 src 的链接替换为下面这个 -->
<script src="https://cdn.bootcss.com/jquery/1.9.0/jquery.min.js"></script>
vim package.json
"test-page": "echo \"open https://0.0.0.0:8443/test/\" && stupid-server -s -c ./4666031_ronz.top.pem -k /etc/httpd/cert/4666031_ronz.top.key -h 0.0.0.0",#让系统支持https协议运行,所以把ssl证书添加到运行的命令当中
启动SimpleWebRTC
npm run test-page
打开浏览器 通过 https://域名:8443/test/ 就可以打开demo并且浏览器申请摄像头和mic权限,点击同意即可。共享桌面的功能偶尔的打开一次,但是有时候又会不显示,不知道为啥,希望看到并手动操作过的小伙伴给个提示
在这里要感谢一下
RonzL
我是通过他写的 Centos7 下搭建 Coturn + SignalMaster + SimpleWebRTChttps://blog.csdn.net/zhuxian1277/article/details/109393922
自己动手操作后的总结。
Centos7.2+Coturn+SignalMaster 搭建WebRTC进行H5直播相关推荐
- 调用ice服务器_Nodejs+socket.io搭建WebRTC信令服务器
前言 我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了. 对于 WebRTC 来说,它有一整套规范,如使它使用的接口.使用SDP进行媒体协商.通过ICE收集地址并 ...
- Nodejs+socket.io搭建WebRTC信令服务器
前言 我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了. 对于 WebRTC 来说,它有一整套规范,如使它使用的接口.使用SDP进行媒体协商.通过ICE收集地址并 ...
- ZEGO:如何从零搭建H5直播平台
H5已成为品牌宣传最重要的表现方式,基于H5打造的的营销方案具有游戏化.场景化.跨屏互动等优势,能更好的展示商品促进用户转化.H5技术还有开发简单,研发周期短,用户接触成本低等特点,尤其是其强化了we ...
- 手把手搭建WebRTC测试环境,实现1对1视频通话
问题背景: 疫情除了火了电商直播.短视频也火了视频会议,其中看zoom和声网市值就能窥探实时音视频的目前发展情况.其中视频会议相关的技术栈基本都是建立在WebRTC基础上,为了了解学习WebRTC, ...
- H5直播之从推流服务搭建到视频直播
最近视频直播比较火,发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前以 HLS 为主,PC端则以 RTMP 为主实时性较好,接下来将围绕这两种视频流协议来展开H5直 ...
- [转]H5直播之从推流服务搭建到视频直播
转自http://www.php.cn/html5-tutorial-403035.html 最近视频直播比较火,发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP,移动 WEB 端目前以 ...
- 阿里云上搭建webRTC 服务器——Licode
阿里云上搭建webRTC 服务器--Licode 系统配置 阿里云服务器 Ubuntu 14.04.5 LTS Docker 环境搭建 在一台空的机器上搭建docker环境,先要安装docker,执行 ...
- centOS7 LNMP+phpmyadmin环境搭建 第三篇phpmyadmin安装
这篇文章主要介绍了CentOS7 LNMP+phpmyadmin环境搭建,第三篇phpmyadmin安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 之前我们已经安装了lnmp的环境,现在让我们 ...
- centos oracle命令,CentOS7命令行方式搭建Oracle11gR2
CentOS7命令行方式搭建Oracle11gR2 CentOS7命令行方式搭建Oracle11gR2 准备工作 vim /etc/selinux/config SELINUX=disabled sy ...
- h5上传图片_怎么搭建自己的H5响应式网站
怎么搭建自己的H5响应式网站?大部分的企业朋友在考虑网站建设时的第一反应一般都是找网站建设公司,心想自己既不懂代码,又不懂设计,除了交给别人做还有什么方法吗?其实不然,下面梅江小程序制作公司圣辉友联先 ...
最新文章
- 精美的电路图都是怎么画出来的?
- linear-gradient与radial-gradient
- 枚举集合的EnumSet
- python程序可以在任何安装了解释器_Python解释器新手安装教程
- MySQL优化常见Extra分析——慢查询优化
- [转]wince中解析reg和bib文件的不同之处
- mysql修改默认的存储引擎
- 計蒜客/數正方形(dp)
- java生成点阵图_Android从SD卡读取图片并显示为点阵图
- Allwinner(全志)V3s Camera sensor Support List
- qpsk频谱图matlab,QPSK调制得出的调制信号频谱波形多了一个点频信号
- Chapter 1 贝叶斯推断的思想
- 寻找NOD32升级服务器不求人
- python的浅拷贝和深copy
- 论语之宪问第十四、卫灵公第十五、季氏第十六
- DC - 13 :顺序表
- 利用python的turtle库画一个图形
- 最新版 swapidc自适应模板
- IEEE国际智能交通系统大会
- 铃音tong script
热门文章
- OSError: inotify watch limit reached
- matlab求稳定时间ts,一阶方程调节时间ts
- springboot快速搭建ftpserver服务端
- 栈溢出 __stack_chk_fail
- HJ 82 将真分数分解为埃及分数
- 穷举php,[讨论]穷举攻击
- 软件工程大一学年简单的总结一下
- 问request.getRequestDispatcher(“url“).forward(request.response)是什么意思
- 域控组策略桌面壁纸设置问题
- LZJ流体质量计算机价格,LZJ-ⅢC型流体质量计算机全解.doc