5分钟搭建一个WebRTC视频聊天

在上篇文章给大家介绍了在Ubuntu上搭建一个基于webrtc的多人视频聊天服务实例代码详解,感兴趣的朋友可以参考下。今天给大家分享一篇关于5分钟搭建一个WebRTC视频聊天。

百度一下WebRTC,我想也是一堆。本以为用这位朋友( 搭建WebRtc环境 )的SkyRTC-demo 就可以一马平川的实现聊天,结果折腾了半天,文本信息都发不出去,更别说视频了。于是自己动手。

想在公网上实现视频通信,需要下面3个核心元素:

  • 一个是NAT穿透服务器(ICE Server),实现内网穿透,具体的作用可以自行百度。
  • 基于WebSocket的信令服务器(Signaling Server),用于建立点对点的通道。Web客户端。
  • 通过H5的WebRTC特性调用摄像头,进行用户交互。

三个部分的组成如下:

蓝色的部分实际部署可以在三台服务器,我这里演示环境都在一台服务器。需要开的端口3478、8888、8080,当然也可以自行配置。下面来详细介绍具体的组合步骤:

准备工作

服务器运行环境:centos 7.3

安装工具:nodejs 、git 请自行百度安装

客户端环境:FireFox(或手机版FireFox)。因为chrome需要https支持,服务器需要部署证书。所以演示程序只支持Firefox,如有需要我会再发一篇文章介绍。

安装NAT穿透服务器(ICE Server)

实现内网穿透的方式主要有stun,turn两种方式,一般用的时候会把stun,turn的地址都配置上,如果连不上stun,会自动切换到turn服务器。详细介绍可以参考:STUN, TURN, ICE介绍网上有很多开源的stun服务器,但丫的我一个都没成功过,有兴趣的可以试试:https://www.jb51.net/article/181287.htm我这里就直接使用coturn只搭建turn server,安装命令如下:

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

附:如果./configure失败的话,应该是需要openssl和Libevent2:

yum install -y openssl openssl-devel

yum -y install libevent-devel

安装完成后,把example/etc里面的turnserver.conf拷贝到bin文件夹:

cp examples/etc/turnserver.conf bin/turnserver.conf

修改配置turnserver.conf,如下:

#监听端口
listening-port=3478

#阿里云内网IP
listening-ip=10.214.31.57

#阿里云外网IP地址
external-ip=118.24.78.34
#访问的用户、密码
user=yubao:000000

启动服务:

cd bin
turnserver -v -r 118.24.78.34:3478 -a -o

搭建好后可以在 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/测试一下有没有成功,如下:

也可以在/var/log文件夹中随时查看运行日志,比如我的:

tail -f /var/log/turn_12447_2018-04-20.log 

信令服务器(Signaling Server)

信令服务器使用的是 signalmaster ,基于websocket。选用它的原因是可以直接集成turn server服务器。

git clone https://github.com/andyet/signalmaster.git
cd signalmaster
npm install express
npm install yetify
npm install getconfig
npm install node-uuid
npm install socket.io

signalmaster可以连接turnserver,但不支持用户名/密码方式,需要对源码sockets.js 110行进行调整,调整后的代码如下:

if (!config.turnorigins || config.turnorigins.indexOf(origin) !== -1) {
  config.turnservers.forEach(function (server) {
  credentials.push({
   username: server.username,
   credential: server.credential,
   urls: server.urls || server.url
  });
  });
 }

完成后,修改config/production.json,配置turnserver的用户和密码,如下:

{
 "isDev": true,
 "server": {
 "port": 8888,
 "/* secure */": "/* whether this connects via https */",
 "secure": false,
 "key": null,
 "cert": null,
 "password": null
 },
 "rooms": {
 "/* maxClients */": "/* maximum number of clients per room. 0 = no limit */",
 "maxClients": 0
 },
 "stunservers": [
 {
 "urls": "stun:stun.ekiga.net:3478"
 }
 ],
 "turnservers": [
 {
 "urls": ["turn:qq.openauth.me:3478"],
 "username": "yubao",
 "credential":"000000",
 "expiry": 86400
 }
 ]
}

启动:

nohup node server.js &

Web客户端

客户端可以快速做一个html的页面,可以参考:一步一步搭建客服系统 (1) 3分钟实现网页版多人文本、视频聊天室 (含完整源码) 当然如果你实在是太懒,直接点击下载吧。可以找个静态的Web服务器,部署上就可以了。注意修改第二部的signal服务器地址:

var webrtc = new SimpleWebRTC({

 localVideoEl: 'localVideo',

 remoteVideosEl: 'remoteVideos',

 autoRequestMedia: true,

 url:'http://qq.openauth.me:8888', //配置成自己的signal服务器

 nick: 'yubaolee' //文本聊天时,用户的昵称

});

我部署的地址:http://qq.openauth.me:8080/baortc/index.html(别随便访问,突然看到我....我会害羞的🙂(✿◡‿◡)),电脑FireFox(chrome安全要求比较高,必须用https,暂时用firefox测试)访问效果:

再用另一台电脑或手机firefox访问,可以发现已经有两个视频窗口(刚刚电脑打开的页面也会自动有两个视频窗口),并且可以文本,视频通信:

自此,一个WebRTC的程序搭建完成。

总结

到此这篇关于5分钟搭建一个WebRTC视频聊天的文章就介绍到这了,更多相关WebRTC视频聊天内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 在Ubuntu上搭建一个基于webrtc的多人视频聊天服务实例代码详解

    WebRTC,即Web Real-Time Communication,web实时通信技术.简单地说就是在web浏览器里面引入实时通信,包括音视频通话等. 在疫情期间哪里也去不了,在家没事就研究webrtc视频直播技术,网上找了些教程最终都不太能顺利跑起来的,可能是文章写的比较老,使用的一些开源组件已经更新了,有些配置已经不太一样了,所以按照以前的步骤会有问题.折腾了一阵终于跑起来了,记录一下. 一个简单的聊天室html页面 这个页面使用simple-webrtc来实现webrtc的通讯,sim

  • 5分钟搭建一个WebRTC视频聊天

    在上篇文章给大家介绍了在Ubuntu上搭建一个基于webrtc的多人视频聊天服务实例代码详解,感兴趣的朋友可以参考下.今天给大家分享一篇关于5分钟搭建一个WebRTC视频聊天. 百度一下WebRTC,我想也是一堆.本以为用这位朋友( 搭建WebRtc环境 )的SkyRTC-demo 就可以一马平川的实现聊天,结果折腾了半天,文本信息都发不出去,更别说视频了.于是自己动手. 想在公网上实现视频通信,需要下面3个核心元素: 一个是NAT穿透服务器(ICE Server),实现内网穿透,具体的作用可以

  • 利用5分钟快速搭建一个springboot项目的全过程

    目录 前言 一.空项目 二.开始springboot之旅 三.总结 前言 现在开发中90%的人都在使用springboot进行开发,你有没有这样的苦恼,如果让你新建一个springboot开发环境的项目,总是很苦恼,需要花费很长时间去调试.今天来分享下如何快速搭建. 一.空项目 现在开发过程中大都是idea这个集成开发环境,笔者之前也是很执拗,一直使用的是eclipse,后来也是公司需要转到了idea,不得不说idea确实好用,没用过的小伙伴可以尝试.这里以idea为演示环境. 我一般都是从一个

  • 基于Python实现从头搭建一个在线聊天室框架

    目录 整体技术栈 搭建权限框架 构建前端页面 今天从头开始做一个在线聊天网站,网上各种各样的聊天工具已经很多了,为啥还要做这么一个聊天工具呢,无他,兴趣耳! 今天先完成第一部分,搭建起聊天网站的整体框架. 整体技术栈 flask 框架 flask_login 的使用 jquery 简单应用 搭建权限框架 还是使用 Flask 来搭建后台应用,使用 flask-login 扩展来处理用户登陆鉴权逻辑. 首先定义登陆表单 class LoginForm(FlaskForm):     usernam

  • Python3从零开始搭建一个语音对话机器人的实现

    01-初心缘由 最近在研究语音识别方向,看了很多的语音识别的资料和文章,了解了一下语音识别的前世今生,其中包含了很多算法的演变,目前来说最流行的语音识别算法主要是依赖于深度学习的神经网络算法,其中RNN扮演了非常重要的作用,深度学习的应用真正让语音识别达到了商用级别.然后我想动手自己做一个语音识别系统,从GitHub上下载了两个流行的开源项目MASR和ASRT来进行复现,发现语音识别的效果没有写的那么好,其中如果要从零来训练自己的语言模型势必会非常耗时. 因此,就有了一个新的想法,借助一些开源的

  • Java如何搭建一个个人网盘

    目录 前言 一.项目介绍 二.网盘搭建 2.1 Windows 环境运行 2.2 Linux 环境运行 三.开发环境运行 3.1 下载项目 3.2 运行 3.3 阅读代码 四.功能说明 4.1 上传 4.2 视频/音频播放 4.3 快捷键使用 4.4 配置文件修改 4.5 在线预览 4.6 分享下载链接 五.最后 前言 本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 网盘项目. 今天给大家带来一款开源 Java 版网盘项目-- kiftd-source,本文将用 3 分钟带

  • 教你使用python搭建一个QQ机器人实现叫起床服务

    目录 前言 具体实现 1.定时发送信息 2.让机器人陪女朋友聊天 3.调用一些有趣的接口 前言 上一篇文章介绍了怎么配置机器人框架,并且实现了一些简单的功能. (发送私聊或者群聊信息.接收上报的事件.简单的自动回复等等) 这次为了让QQ机器人更加智能,调用了一些实用的接口. 通过自己搭建的机器人实现定时叫女朋友起床.和女朋友聊天等功能. 如上图所示,我的机器人每天都会准时叫女朋友起床:并且在我忙的时候然而女朋友无聊的时候可以陪她聊一会天. 具体实现 以下实现的功能都需要机器人已经配置完成,并且已

  • Peer.js 构建视频聊天应用使用详解

    目录 正文 步骤 1:设置环境 步骤 2:创建 Peer 实例 步骤 3:获取本地媒体流 步骤 4:接收远程媒体流 步骤 5:连接到另一个 Peer 结论 正文 Peer.js 是一个浏览器端的 Peer-to-Peer 库,可以方便地构建 WebRTC 应用程序.在本文中,我们将使用 Peer.js 来创建一个简单的视频 聊天应用程序. 步骤 1:设置环境 首先,我们需要在项目中引入 Peer.js 库.我们可以使用 npm 或者 CDN 来引入它.在这里,我们将使用 CDN. <script

  • Flask入门教程实例:搭建一个静态博客

    现在流行的静态博客/网站生成工具有很多,比如 Jekyll, Pelican, Middleman, Hyde 等等,StaticGen 列出了目前最流行的一些静态网站生成工具. 我们的内部工具由 Python/Flask/MongoDB 搭建,现在需要加上文档功能,写作格式是 Markdown,不想把文档放到数据库里,也不想再弄一套静态博客工具来管理文档,于是找到了 Flask-FlatPages 这个好用的 Flask 模块.熟悉 Flask 的同学花几分钟的时间就可以用搭建一个简单博客,加

  • Docker 1分钟搭建DNS服务器的方法

    这里我们使用dnsmasq对应的docker版本docker-dnsmasq. 使用指南 下载镜像 docker pull docker-dnsmasq 创建最简单的配置/opt/dnsmasq.conf #dnsmasq config, for a complete example, see: # http://oss.segetech.com/intra/srv/dnsmasq.conf #dns解析日志 log-queries #定义主机与IP映射 address=/h0/172.17.2

随机推荐