工作使用janus服务器但是网上相关资料比较少,于是准备翻译一下官方文档。
1、janus框架结构
janus是基于SFU结构的WebRTC流媒体服务器,由C语言进行编写因此性能非常优秀,整体架构图如下:
janu主要由三部分组成,分别是Core、Plugin和Transport。
《1》、Core: Janus的核心部分,其功能是将传输涉及到的所有Janus连接在一起,实现了server端跟浏览器的交互、处理交互双方的会话(session)、处理媒体信令及协商。Core实现了WebRTC标准中授权的议及技术,包括SDP、ICE、DTLS-SRTP、RTP/RTCP。
官方原文:
《2》、Plugin: janus插件,Janus的业务管理是按照插件方式管理的。Janus已经有实现多种不同的媒体处理插件,如videoroom等。这些插件可以在应用层这一层单独使用也可以多个插件协作一起构建负责的WebRTC媒体应用。
《3》、Transport:Janus的信令传输层,该模块对外提供API接口,用于外部和Janus及其插件进行交互。当前支持的协议有RESTful(http/https)、WebSock、MQTT、NanoMsg、RabbitMQ和UnixSockets。(新的Janus还提供JavaScript 库janus.js用于统一基于http和websocket协议的接口)
2、关于Janus 的API
《1》、Admin/Monitor API: 该API用于监控Janus的资源使用,可以用于查询和session和ICE handle相关的详细信息(如ICE/DTLS状态等),在调试媒体流层面相关问题时显得非常有用。需要注意的是这个是用同步方式实现的API,因此如果你需要使用异步的方式和Core及Plugin交互的话就得使用Janus的EventHandler机制。需要自己手动调用该API接口,若要获取最新信息则要实现定期查询逻辑。Admin API出于安全考虑是默认关闭的。
《2》、Event Handler API(事件处理接口):和Admin API的功能一致,都是用于监控Janus,但是当会话特别多时Admin API会有性能问题(因为他是基于poll的而且需要定期查询),这时候就需要Event Handler API。
原文:
3、参考
《1》、官网Main page
《2》、Janus(一)开源服务器介绍