基于WebRTC的多人视频会议

标签: | 发表时间:2019-05-14 16:18 | 作者:
出处:https://blog.shengbin.me

最近两周在调研和搭建基于WebRTC的多人视频会议系统。目前已经搭建成功,可以在 http://jitsi.shengbin.me/试用。

这个系统无需注册和登录,只要多人访问同一个URL(含有系统为每个房间分配的特定ID),就可以进行视频会议。如果上面那个链接失效,可以尝试国外一个同样的系统: https://meet.jit.si/。使用视频会议系统需要客户端电脑提供摄像头功能;至于带宽,当然是越大越好了。

下面总结一下该系统的组成。

客户端

客户端是一个Web App的形式,包括HTML、CSS、JavaScript代码组成的网页。HTML和CSS来构造聊天室的界面,JavaScript来实现功能。由于功能比较复杂,JS代码也较多。

通过WebRTC,客户端从用户摄像头获取图像并传给服务器,来实现视频会议。由于WebRTC只在Chrome、Opera、Firefox上支持,而Firefox有 相关的bug尚未解决,所以客户端只能运行于Chrome或者Opera浏览器。

服务器

服务器端包含多个部分。下面分别介绍。

Nginx

Nginx是一个Web服务器,与著名的Apache同类。它的用途是提供网页访问。

Prosody

Prosody是一个XMPP服务器。XMPP全称是Extensible Messaging and Presence Protocol,即可扩展通信和表示协议。它是一种即时通信协议,主要是实现文字聊天。

XMPP的前身是Jabber,一个开源的即时通信协议。Jabber被IETF标准化为XMPP。Google Talk用的就是它。

Jitsi-Videobridge

Jitsi-Videobridge用于处理视频传输,也就是视频流在各参与者之间的转发。如果没有这个组件,各参与者能文字聊天,但无法互相看见。

转发意味着服务器要从N个参与者那里接受视频流,然后给每个参与者发送其他N-1个参与者的视频数据,这对服务器带宽要求很高。但由于未对视频做任何处理,CPU负载并不高。

Restund

这是一个STUN/TURN服务器。STUN是一种NAT穿透技术,用于帮助处在内网的主机确定自己的公网IP和端口,从而与别的主机建立直接连接(WebRTC中PeerConnection)。TURN是STUN的增强版,可以在无法穿透NAT进行直连的情况下提供数据的转发。

上述整个系统都是开源的,更多信息可参见相关的 GitHub代码库Jitsi主页

相关 [webrtc 多人 视频会议] 推荐:

基于WebRTC的多人视频会议

- -
最近两周在调研和搭建基于WebRTC的多人视频会议系统. http://jitsi.shengbin.me/试用. 这个系统无需注册和登录,只要多人访问同一个URL(含有系统为每个房间分配的特定ID),就可以进行视频会议. 如果上面那个链接失效,可以尝试国外一个同样的系统:. 使用视频会议系统需要客户端电脑提供摄像头功能;至于带宽,当然是越大越好了.

WebRTC 点对点直播

- - SegmentFault 最新的文章
摘自: villainhr. WebRTC 全称为: Web Real-Time Communication. 它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer(就是浏览器间)的视频交互. 实际上,细分看来,它包含三个部分:. MediaStream:捕获音视频流.

Firefox 22发布,支持WebRTC和asm.js

- - Solidot
Mozilla发布了Firefox 22的桌面版和移动版. 桌面版的主要变化包括默认启用开源视频语音通信工具WebRTC,WebRTC可以实现跨浏览器或跨平台的即时通讯功能. Firefox 22另一个重大变化是支持JavaScript的高性能子集asm.js,Mozilla此前曾与 Epic Games合作,利用asm.js将虚幻引擎3移植到浏览器上,在Web上实现接近原生的性能.

Mozilla为Firefox加入WebRTC聊天功能

- - Solidot
Mozilla Future Releases博客宣布,最新的Firefox Nightly版加入了基于WebRTC的语音视频聊天功能. WebRTC提供了跨浏览器或跨平台的即时通讯功能. Mozilla产品管理总监Chad Weiner说,没有插件,不需要下载,只需要一个支持WebRTC的浏览器(如Firefox和Chrome),一个摄像头和麦克风,你就可以语音和视频呼叫其他使用这些浏览器的用户.

基于 WebRTC 的互动直播实践

- - IT瘾-dev
互动直播已经逐渐成为直播的主要形式. 映客直播资深音视频工程师叶峰峰在LiveVideoStackCon 2018大会的演讲中详细介绍了INKE自研连麦整体设计思路、如何基于WebRTC搭建互动直播SDK以及针对用户体验进行优化. 本文由LiveVideoStack整理而成. 整理 / LiveVideoStack.

谷歌开放实时通信框架 WebRTC

- gaochao - 开源中国社区最新软件
北京时间6月2日凌晨消息,谷歌今日宣布向开发人员开放WebRTC架构的源代码. WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌去年以6820万美元收购收购Global IT Solutions公司而获得一项技术. 谷歌今日在官方博客中称:“我们希望让浏览器成为实时通信的创新地所在,到目前为止,实时通信需要使用受版权保护的信号处理技术,并通过插件或下载客户端才能实现,而WebRTC则允许开发人员使用HTML和JavaScript API来创.

谷歌开放实时通信框架WebRTC源代码

- 天绝@Lee - cnBeta全文版
谷歌今日宣布向开发人员开放WebRTC架构的源代码. WebRTC是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌去年以6820万美元收购收购Global IT Solutions公司而获得一项技术. 谷歌今日在官方博客中称:“我们希望让浏览器成为实时通信的创新地所在,到目前为止,实时通信需要使用受版权保护的信号处理技术,并通过插件或下载客户端才能实现,而WebRTC则允许开发人员使用HTML和JavaScript API来创建实时应用.

微软 Skype for Browsers 应用将支持 WebRTC 标准

- - LiveSino - LiveSide 中文版
最近有 新的招聘暗示,Skype Web App(Skype for Browsers)将支持 WebRTC 标准. Gigaom 注意到了这则“高级软件开发工程师,WebRTC”的招聘,工作地点是在 Skype London 和 Palo ALto 办公室,重点部分如下:. 你将帮助创建一种架构,来允许在 Skype 网络中 WebRTC 的终端与其他终端直接互通,而不需要网关.

PeerJS 0.1.7:一个用于浏览器内P2P的WebRTC封装器

- - InfoQ cn
Michelle Bu与 Eric Zhang在3月6日发布了 PeerJS 0.1.7,它封装了WebRTC. 后者是W3C倡议的旨在促进浏览器内P2P通信的一种技术. 尽管 WebSocket的作用发展迅速,但PeerJS代表的是服务器所组织数据之传输方式的一种根本性转变. Bu说:“WebSocket和WebRTC数据通道看起来一样——都支持二进制数据,还允许从一个客户端发送可能最终会到达另一客户端的任意数据,然而它们本质上是不同的.

Chrome21稳定版发布,初步实现WebRTC

- - 脚本爱好者
谷歌的 Chrome 团队今天正式发布了 Chrome 21 稳定版本,Mac 和 Linux 平台上的版本号为 21.0.1180.57,Windows 平台上的版本号为 21.0.1180.60.   该版本中包含了一系列新的特性,新增了一个用于高质量视频音频通讯的. getUserMedia API,该 API 允许 Web 应用程序访问摄像头和麦克风,而无需使用插件,这是实现.