Webrtc音视频会议之Janus源码架构设计

Webrtc音视频会议之Janus源码架构设计

架构

Janus的整体架构是插件化的,其中只有Core部分是正常启动,其它三部分Transports,Plugin,EventHandler都是由Core动态从配置文件janus.jcfg中读取配置的目录,然后从配置的目录中读取动态库加载的,只要动态库中实现了指定的一些方法就能被Core模块正确的加载;这样从某种意义上来说Transports,plugin,EventHandler都是插件;可以被定制化增减;
架构简图:
在这里插入图片描述
架构详细图:
在这里插入图片描述
下面来详细说一说整体架构中所有模块的功能,看上面我绘制的详细架构图,本图虽然不能体现所有功能,但是已经展示了所有重要的功能了;

Core模块

Core模块中包含的都是Janus WebRTC server中必要的一些功能,一下做一些简单说明
Session池:维护ICE过来的客户端,这样根据一定的规则把接收过到的RTP包转给Session池中维护的端,
消息池:客户端通过Tranports中过来的消息可以进行异步处理,先放入待处理池增加吞吐量;
配置管理:Janus 虽然提供了很多默认的配置,但是这些配置是可以被修改这些都是在配置管理中进行处理
日志体系:Janus中的日志都是通过这个模块对外进行输出,它管理了日志级别控制了输出目标,支持文件输出
ICE:ICE是Janus WebRTC server代理UDP的核心通过它进行P2P连接然后接收RTP包转发
Stun/Turn server: 它们为ICE提供穿越打洞的能力,可以配置是否开启,如果Janus和其它端在同一个NAT内无需打洞,可以通过配置关闭此功能,增加性能
RTP/RTCP:媒体的UDP包都是大包成RTP包转发的
安全:支持SSL

Transports通道

Transports顾名思义,它就是通道;具体来说就是信令通道;信令可以通过这些通道来从客户端到服务端; Janus WebRTC server中实现了很多的信令通道方式,看上图的六种通道,实际应用中我们不需要所有信令通道;实际情况下面我们根据实际情况只需要选择1到2中信令通道就行了

Plugin

Janus WebRTC server通过Plugin提供各种业务支持
Audiobridge:实现的功能是语音会议室,只发语音
Lua:让插件支持lua
VideoRoom: 音视频会议室功能
SIP:支持接入SIP协议
VideoCall: 上图有点问题,是VideoCall,也就是视频一对一通话功能
Streaming: 抽取放出音视频流,这样您整个系统中其它组件需要纯粹的音视频流就可以实现了

EventHandler

Janus中实现的事件机制,产生的事件可以通过这些Handler来处理,
支持的主要Handler有MQTT,RabbitMQ,WebSocket等

WebRTC音视频转发核心原理

Janus WebRTC server 通过开源库libnice这个ICE开源库把服务端模拟成一个Peer对等端;具体来说就是客户端发起Offer并且发送自己的SDP和Candidate给Janus WebRTC server,然后Janus把服务器的IP和端加入Candidate作为Answer发送给客户端,这样客户端和服务端就进行了对等连接;并且ICE监听UDP通道接收到RTP包后转发给其它的对等连接;这里要着重说明的是Janus每个客户端发起连接后Janus都分配一个端口,也就是每个端占用一个UDP端口;Janus是多端口,这是不友好的点,后续有机会我们改造成单端口
转发的核心原理就这么简单,详细的后面我们来看具体的代码

总结

看了这篇文章我们基本能了解Janus WebRTC server是一种什么架构,它支持哪些功能适合什么样的业务场景;如何转发媒体包


引用文章请标明出处,否则可以保留一切追究责任的权利
技术交流:
qq:408365330
微信:egojit

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值