janus架构学习

2024-04-18 08:28
文章标签 学习 架构 janus

本文主要是介绍janus架构学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基础介绍

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

架构

janus为sfu架构
image.png

模块结构图

模块说明

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,可以传输任意数据

插件模块plugins

Echo Test回声测试,⽀持通过按钮控制码率,从这⾥我们也可以学习到如何控制码率.
Streaming播放视频或⾳频流,可⽤于⽹络直播或转播。
Video Call⾳视频⼀对⼀通话,类似AppRTC的通话,但是⾳视频数据经过Janus进⾏传输。
SIP GatewaySIP⽹关演示,允许您在SIP服务器上注册并启动/接收呼叫。
Video Room视频会议演示,允许您加⼊最多有六个⽤户的视频会议室。
Audio Room⾳频会议演示,不同⽤户之间的⾳频将进⾏混⾳。
Text Room⽂字聊天室,通过DataChannels进⾏传输。
Voice Mail演示语⾳邮件功能,可以录制⼗秒的⾳频,然后可以进⾏回放。
Recorder/Playout演示录制⾳频、视频,然后通过WebRTC进⾏回放.
NoSIP (SDP/RTP)传统的互操作演示(例如,与SIP对等端),其中信令由应用程序决定。
Device Selection回声测试演示的变体,允许您选择特定的捕获设备。
End-to-end EncryptionEcho Test演示的一个变体,允许您以Janus无法访问但仍然可以路由的方式加密视频。
Multichannel Opus (surround)回声测试演示的变体,显示了对多声道/环绕Opus的支持。
Canvas CaptureEcho Test演示的一个变体,展示了如何使用画布元素作为WebRTC媒体源。
VP9-SVC Video RoomA variant of the Video Room demo, that allows you to test the VP9 SVC layer selection, if available.
Admin/Monitor一个简单的页面,展示如何使用Janus Admin/Monitor API。

transports模块

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

event handles模块

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

loggers模块

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

tools and utilities模块

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

这篇关于janus架构学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/914255

相关文章

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Maven 插件配置分层架构深度解析

《Maven插件配置分层架构深度解析》:本文主要介绍Maven插件配置分层架构深度解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Maven 插件配置分层架构深度解析引言:当构建逻辑遇上复杂配置第一章 Maven插件配置的三重境界1.1 插件配置的拓扑

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Java异常架构Exception(异常)详解

《Java异常架构Exception(异常)详解》:本文主要介绍Java异常架构Exception(异常),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. Exception 类的概述Exception的分类2. 受检异常(Checked Exception)

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx