Janus WebRTC Server研究

栏目: 后端 · 前端 · 发布时间: 8年前

内容简介:WebRTC本身只支持点对点,群聊只能客户端通过发多路音视频数据给别的客户端,对于客户端压力非常大,所以无法支持更多人的群聊,而且有些NAT是无法通过点对点对连的,所以需要一个中转服务器来中转,经过初步考察有kurento、 licode、 janus三个主要的开源项目,其中又以janus的star最多,所以就先拿这个项目研究一下,我个人是有点想写个golang版本来替代。janus github地址:初看了一下janus源码,大概原理如下:

前言

未编译及测试,直接裸看Janus WebRTC Server代码。

WebRTC本身只支持点对点,群聊只能客户端通过发多路音视频数据给别的客户端,对于客户端压力非常大,所以无法支持更多人的群聊,而且有些NAT是无法通过点对点对连的,所以需要一个中转服务器来中转,经过初步考察有kurento、 licode、 janus三个主要的开源项目,其中又以janus的star最多,所以就先拿这个项目研究一下,我个人是有点想写个golang版本来替代。

janus github地址: https://github.com/meetecho/janus-gateway

janus原理

初看了一下janus源码,大概原理如下:

janus使用ICE模拟WebRTC客户端与真实的WebRTC客户端进行交换candidate然后进行连接,当收到客户端数据后,转交给plugin比如 janus_videoroom.c 进行处理,videoroom把RTP音视频包和RTCP包转发给同一个room的所有订阅者。

janus本身只是做一个被调用的框架,使用plugin来实现具体的业务逻辑,比如videoroom、textroom等等。

janus内置了http或者websocket服务,html目录下的html+js例子通过http来调用janus的具体功能组成业务逻辑,这些例子稍作修改也可以支持websocket。

janus本身使用了大量的第三方开源库,比较核心的是ICE使用 libnice ,SRTP使用 libsrtp 等等。

另个开源的WebRTC server: licode 也同样使用了libnice和libsrtp,只不过licode是c++写的所以又加了一层c++封装来使用libnice。

未完待续...


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Pro JavaScript Design Patterns

Pro JavaScript Design Patterns

Dustin Diaz、Ross Harmes / Apress / 2007-12-16 / USD 44.99

As a web developer, you’ll already know that JavaScript™ is a powerful language, allowing you to add an impressive array of dynamic functionality to otherwise static web sites. But there is more power......一起来看看 《Pro JavaScript Design Patterns》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换