Janus WebRTC Server研究

云上听风 · · 3539 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

前言


未编译及测试,直接裸看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。

未完待续...


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:云上听风

查看原文:Janus WebRTC Server研究

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3539 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传