Janus WebRTC Server研究
云上听风 · · 4374 次点击 · · 开始浏览前言
未编译及测试,直接裸看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。
未完待续...
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
前言
未编译及测试,直接裸看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。
未完待续...