Centos7.2+Coturn+SignalMaster 搭建WebRTC进行H5直播

2023-11-07 13:38

本文主要是介绍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 + SimpleWebRTCicon-default.png?t=M0H8https://blog.csdn.net/zhuxian1277/article/details/109393922

自己动手操作后的总结。

这篇关于Centos7.2+Coturn+SignalMaster 搭建WebRTC进行H5直播的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363968

相关文章

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

pico2 开发环境搭建-基于ubuntu

pico2 开发环境搭建-基于ubuntu 安装编译工具链下载sdk 和example编译example 安装编译工具链 sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib 注意cmake的版本,需要在3.17 以上 下载sdk 和ex

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

速盾:直播 cdn 服务器带宽?

在当今数字化时代,直播已经成为了一种非常流行的娱乐和商业活动形式。为了确保直播的流畅性和高质量,直播平台通常会使用 CDN(Content Delivery Network,内容分发网络)服务器来分发直播流。而 CDN 服务器的带宽则是影响直播质量的一个重要因素。下面我们就来探讨一下速盾视角下的直播 CDN 服务器带宽问题。 一、直播对带宽的需求 高清视频流 直播通常需要传输高清视频

利用matlab bar函数绘制较为复杂的柱状图,并在图中进行适当标注

示例代码和结果如下:小疑问:如何自动选择合适的坐标位置对柱状图的数值大小进行标注?😂 clear; close all;x = 1:3;aa=[28.6321521955954 26.2453660695847 21.69102348512086.93747104431360 6.25442246899816 3.342835958564245.51365061796319 4.87

雷动WEBRTC产品

http://www.rtcpower.com/html/leidongwebrtc.html ; 1.前言      WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得一项技术。WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以