webrtc终极版(一)5分钟搭建多人实时会议系统webrtc
webrtc终极版(一),支持https,在线部署【不是本地demo】,采用RTCMultiConnection官方demo,5分钟即可搭建成功
@
前言
webrtc现在简直是太火了,几乎涵盖了我们行业的方方面面,他的诱人之处在于,他是p2p通信,几乎不怎么耗费服务器流量
本文是webrtc系列的第一篇,您没看错,就是5分钟即可搭建成功,多一分钟算我输,如果您的要求比较低,甚至可以将这个直接使用起来,但是我强烈建议您不要这样做
能研究到webrtc的,一般不会是刚入门的小菜鸟,起码是技术骨干级别,所以我强烈建议您完成整个系列文章的阅读,再这个系列文章里我们将会学到以下内容
第一篇:采用RTCMultiConnection官方demo,5分钟搭建起来webrtc
第二篇:搭建自己的iceserver服务器,并用到RTCMultiConnection的demo中
第三篇:将官方RTCMultiConnection的demo部署到自己的服务器中
第四篇:如果不用第三方RTCMultiConnection,裸写一个怎么样
我们做事情,比方说webrtc这样的事情,领导可能再催着我们,再等着看效果,所以,如果我们上来就慢慢研究原理,可能两三天过去了,也没有搞定,这样我们心里就会发慌,工作内容总不能一直写研究webrtc吧,所以上来先完成一个demo,并能正常运行,就显得非常重要了。
一、webrtc是什么?
能看到这篇文章的,相信几乎没有不知道什么是webrtc的了,但是作为文章的重要组成部分,还是需要介绍下什么是webrtc。
它(WebRTC)允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输
这是 MDN 上对 WebRTC 的描述,初次接触时无法理解 WebRTC 为什么要和 WebSocket 搭配,明明说的很清楚 不借助中间媒介 ,那 WebSocket 充当的是什么角色?整个 WebRTC 通话建立的流程又是怎样的?
上面的问题是个大的话题,原理介绍我准备放到第四篇章进行,本篇文章,我们就只有一个目的,那就是5分钟搭建一个webrtc,enjoy it!
二、搭建demo步骤
1.代码内容
啥都不说了,直接上代码:
<!DOCTYPETYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Video Conference</title>
</head>
<body>
<button id="btn-open-room">Open Room</button>
<button id="btn-join-room">Join Room</button>
<!-- Include RTCMultiConnectionClient.js -->
<script src="https://muazkhan.com:9001/dist/RTCMultiConnection.min.js"></script>
<script src="https://muazkhan.com:9001/socket.io/socket.io.js"></script>
<script>
var connection = new RTCMultiConnection();
// this line is VERY_important
connection.socketURL = 'https://muazkhan.com:9001/';
// all below lines are optional; however recommended.
connection.session = {
audio: true,
video: true
};
connection.sdpConstraints.mandatory = {
OfferToReceiveAudio: true,
OfferToReceiveVideo: true
};
connection.onstream = function(event) {
debugger;
document.body.appendChild( event.mediaElement );
};
var predefinedRoomId = 'testroom';
// first step, ignore default STUN+TURN servers
connection.iceServers = [];
connection.iceServers.push({
urls: 'stun:muazkhan.com:3478',
credential: 'muazkh',
username: 'hkzaum'
});
connection.iceServers.push({
urls: 'turns:muazkhan.com:5349',
credential: 'muazkh',
username: 'hkzaum'
});
connection.iceServers.push({
urls: 'turn:muazkhan.com:3478',
credential: 'muazkh',
username: 'hkzaum'
});
document.getElementById('btn-open-room').onclick = function() {
this.disabled = true;
connection.open( predefinedRoomId );
};
document.getElementById('btn-join-room').onclick = function() {
this.disabled = true;
connection.join( predefinedRoomId );
};
</script>
</body>
</html>
2.运行效果
第一个界面:运行页面后的初始界面

第二个界面,点击open room,并同意音视频采集请求

第三个界面:点击jon room按钮的效果

第四个界面:多人点击join room按钮的效果

总结
以上html,您可以再本地直接打开运行,本地打开,那就只能内网测试了,同时,您也可以把这个html放到公网上,注意是必须https,否则浏览器会阻止音视频的打开
本文是webrtc的开篇,是不是感觉非常的轻松,并且对webrtc充满信心了呢?这个第三方的组件,是支持多人音视频聊天的,非常的强大,后续几篇我们会深入讨论。
同时也欢迎您关注爱自律官方微信公众号,同时体验爱自律小程序的使用,让我们一起爱上自律,拥抱自由吧。
webrtc终极版(一)5分钟搭建多人实时会议系统webrtc的更多相关文章
- 讲解开源项目:5分钟搭建私人Java博客系统
本文适合刚学习完 Java 语言基础的人群,跟着本文可了解和运行 Tale 项目.示例均在 Windows 操作系统下演示 本文作者:HelloGitHub-秦人 HelloGitHub 推出的< ...
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...
- 2分钟实现一个Vue实时直播系统
前言 我们在不敲代码的时候可能会去看游戏直播,那么是前台怎么实现的呢?下面我们来讲一下.第一步,购买云直播服务 首先,你必须去阿里云或者腾讯云注册一个直播服务.也花不了几个钱,练手的话,几十块钱就够了 ...
- 08重编终极版《东邪西毒:终极版》DVD粤语中字
1.东邪西毒].Ashes.of.Time.1994.384p.DVDRip.x264.ac3-DTMM.mkv 这个版本最清晰 ,可惜删减了,只有87分钟,粤语,1.4G. 2.东邪西毒(初始版). ...
- 5分钟搭建 nginx +php --------------(LNMP)新手专用
5分钟搭建 nginx +php --------------(LNMP)新手专用 2014-11-14 16:48 88876人阅读 评论(2) 收藏 举报 版权声明:本文为博主原创文章,未经博主允 ...
- LAMP-五分钟搭建个人论坛
LAMP-五分钟搭建个人论坛 系统版本:CentOS7 1.##安装lamp及依赖软件wget http://repo.mysql.com/mysql-community-release-el7-5. ...
- 阿里官方Java代码规范标准《阿里巴巴Java开发手册 终极版 v1.3.0》
终极版 v1.3.0 2017年开春之际,阿里诚意献上重磅大礼:<阿里巴巴Java开发手册>,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平, ...
- 一分钟搭建Vue2.0+Webpack2.0多页面项目
想要自己一步步搭建的比较麻烦,不是很推荐,最少也要使用vue-cli,在其基础上开始搭建,今天我的主题是一分钟搭建,那么常规方法肯定不能满足的, 而我用的方法也很简单,就是使用已经配置完成的demo模 ...
- python3 购物车 增改查终极版~
还是先来条NLP再说,快没了,以后想抄还没有... 十一,没有挫败,只有回应讯息 “挫败”只是指出过去的做法得不到预期的效果,是给我们需要改变的信号. “挫败”只是在事情画上句号时才能用上,欲想事情解 ...
- Go版GTK:环境搭建(windows)
Go版GTK:环境搭建(windows) https://blog.csdn.net/tennysonsky/article/details/79221507 所属专栏: Go语言开发实战 1 ...
随机推荐
- java字符串与json互转
开发中经常遇到将字符串转成json和字符串转成json属组的方法,网上搜到的方法,好多都是不好用的,今天这里记录一下方便自己今后查看,也提供给需要的人. 依赖: <!-- 处理json --&g ...
- rem在手机移动端app中的兼容适配问题
这是我之前一直使用的第一种rem方案.贴代码 1 <script> 2 // 适用于750的设计稿 3 var iScale = 1; 4 // 通过页面加载的时候去获取用户设备的物理像素 ...
- 文件传输中的MD5校验技术
1. 文件的MD5校验简介 文件的MD5校验是一种常用的文件完整性验证方法.MD5(Message Digest Algorithm 5)是一种广泛应用的哈希算法,它能够将任意长度的数据转换为固定长度 ...
- [转帖]PolarDB和Oceanbase的区别和联系
PolarDB-X 和 OceanBase 都是阿里云提供的分布式关系型数据库产品,它们都具有高可用.高性能.分布式等特点.但是两者也存在一些差异. 数据库理论基础不同 PolarDB-X 基于传统的 ...
- [转帖]Kubernetes 1.23:IPv4/IPv6 双协议栈网络达到 GA
https://kubernetes.io/zh-cn/blog/2021/12/08/dual-stack-networking-ga/#:~:text=Kubernetes%201.23%EF%B ...
- [转帖]Shell编程规范与变量
目录 一.Shell的概念 Shell脚本的概念 Shell脚本应用场景 二.Shell的作用 Shell脚本种类 shell脚本的作用 Shell脚本的构成 Shell脚本的构成 二.编写Shell ...
- [转帖]如何监控Redis性能指标(译)
Redis给人的印象是简单.很快,但是不代表它不需要关注它的性能指标,此文简单地介绍了一部分Redis性能指标.翻译过程中加入了自己延伸的一些疑问信息,仍然还有一些东西没有完全弄明白.原文中Metri ...
- [转帖]Jmeter中线程组和setUP线程组、tearDown线程组的区别
JMETER: setUP线程组:在测试任务ThreadGroup 运行前先被运行.通常用在运行测试任务前,做初始化工作.例如建立数据库连接初始分化工作.用户登录 tearDown线程组:在测试任务线 ...
- 【转帖】MySQL 8.0.32如期而至
MySQL 8.0版本计划 MySQL 8.0开始采用快速迭代开发模式,基本上是每隔3个月就发布一个新的小版本.去年1月18日(2022.1.18)发布MySQL 8.0.28,今年1月17日发布My ...
- 【转帖】Java Full GC (Ergonomics) 的排查
文章目录 1. Full GC (Ergonomics) 1.1 Java 进程一直进行 Full GC 1.2 Full GC 的原因 1.3 检查堆占用 2. 代码检查 3. 解决方式 1. Fu ...