基础介绍

Janus 是由Meetecho设计和开发的开源、通用的基于SFU架构的WebRTC流媒体服务器,它支持在Linux的服务器或MacOS上的机器进行编译和安装。Janus 是使用C语言进行编写的,它的性能十分优秀。

架构

janus为sfu架构
janus架构学习-LMLPHP

模块结构图

janus架构学习-LMLPHP

模块说明

core模块

Janus WebRTC服务器建立在将相关部分粘合在一起的核心之上。主要代码是janus.c,它实现了服务器本身背后的逻辑:它实现了与浏览器交互的web服务器,并处理与浏览器的会话。这包括处理媒体信号和协商,以及使用可用插件桥接对等端。
ICE:打洞,负责与Peer的连通,Janus可以部署在NAT后⾯,使⽤了libnice;
DTLS:UDP版的TLS,就是加密的UDP,WebRTC⽤来传递SRTP的密钥,使⽤了
OpenSSL/BoringSSL;
RTP/RTCP:提供RTP/RTCP封/解包的接⼝,需要发送⼀些WebRTC⽀持的RTCP包,例如FIR、
PLI、RR等;
SRTP:加密的RTP,开启后WebRTC传输的RTP负载都是加密的;
SDP:提供SDP封/解包的接⼝,⽤于协商媒体的协议,可以⽤SDP对WebRTC的⼀些功能进⾏设定
(编码器优先、码率限制),媒体能⼒的协商;
candidate:⽹络信息,⽹络协商。
SCTP:WebRTC的数据通道使⽤的协议,就是加上了流控的UDP,可以传输任意数据

janus架构学习-LMLPHP

插件模块plugins

transports模块

用于编写新插件的API在Transport API部分中指定。

event handles模块

用于编写新事件处理程序插件的API在事件处理程序API部分中指定。

loggers模块

用于编写新记录器插件的API在logger API部分中指定。

tools and utilities模块

一组简单的工具和实用程序,当与Janus结合使用时可能会有所帮助。

04-18 07:00