专栏
天翼云开发者社区

JitsiMeet-架构

2023-08-08 15:27:53 114阅读

架构

本节对JitsiMeet基础设施进行了全面概述。如果您刚开始接触该项目,我们强烈建议您彻底阅读本节。
 

组件

Jitsi包含以下一系列项目(collection of projects)
  • Jitsi Meet - 兼容WebRTC的JavaScript应用程序,使用JitsiVideobridge提供高质量、可扩展的视频会议。基于React和React Native构建。
  • Jitsi Videobridge (JVB) - WebRTC兼容服务器,用于在会议参与者之间路由视频流。
  • Jitsi Conference Focus (jicofo) - Jitsi Meet会议中使用的服务器端焦点组件,用于管理媒体会话,并充当每个参与者和视频桥之间的负载均衡器。
  • Jitsi Gateway to SIP (jigasi) - 服务器端应用程序,允许常规SIP客户端加入Jitsi Meet会议
  • Jitsi Broadcasting Infrastructure (jibri) - 一组用于录制和/或流式传输Jitsi Meet会议的工具,其工作方式是启动在虚拟帧缓冲区中渲染的Chrome实例,并使用ffmpeg捕获和编码输出。
Jitsi使用的外部软件:
  • Prosody - 用于信令的XMPP服务器

SIP:

SIP会话(Session)是两个用户终端之间(也可能是多个用户之间)基于IP网络的会话,即VoIP会话;会话的媒体一般是语音、视频、也可能有其他形式。

SIP协议本身只负责会话的建立,具体来说,就是在两个用户终端之间通过SIP消息交换传递消息,完成会话的建立;会话建立过程中的一个关键点是交换发送/接受会话媒体的地址及相关参数,即媒体描述;媒体描述是通过SDP来完成的;会话建立以后,两方得到了彼此的媒体地址之后,就可以向对方发送媒体,开始通话。媒体传输是通过RTP(实时传输协议)完成的。SDP、RTP,与SIP协议是相对独立的。
 

架构图

下图描述了前面描述的组件之间的各个连接以及它们的外部集成。
 
 
外部连接可分为两大类。首先,通过远程请求和数据流执行的请求视频或音频连接的客户端之间的连接。第二类外部连接是与外部服务的连接,这些服务有助于存储录音、流式录制、流式视频或帮助创建会议。
 

代码库结构

在本节中,我们将查看代码库的主要部分,并了解它们的用途。

./react/features 这个文件夹是最好开始编写代码的地方,因为它包含了安卓和iOS应用程序以及Web版本中使用的大多数应用程序组件。这个源文件夹又被分为Jitsi提供的所有不同功能,如身份验证、聊天交互、键盘快捷键、屏幕截图捕获、远程控制和虚拟背景。这些特性中的每一个在这个目录下都有自己的文件夹,然后将其再次拆分,以在整个代码中保持层次结构和一致性。

每个功能文件夹都由一个名为components的子文件夹组成,在该文件夹中,所有React或对于移动设备的React Native组件都被表示出来。通常在这个文件夹中,本地组件和web组件之间会有一个分离,但在某些情况下,相同的组件可以用于Android、iOS和web浏览器,在这种情况下不会进行分离。

如前所述,代码库主要由React和React Native组成,后者是移动应用程序的React版本。大多数功能都使用了React class-comp所谓的类组件,但一些新功能开始使用hooksfunc-comp编写功能组件的新方法。

该应用程序还使用React Redux,它被用作通用状态存储,以跟踪整个应用程序中使用的重要参数。更多关于React Redux的信息可以在这里找到react-redux

大多数功能还包含一个名为middleware.js的文件。该文件充当了组件和应用程序其余部分功能之间的桥梁。

./modules/external-api 在此文件夹中,可以找到外部API。此API可用于各种事件,如参会者加入/离开会议、头像或聊天的更改,以及使用麦克风或相机时的错误。

./android and ./ios 这两个文件夹分别包含Android和iOS应用程序的基础知识。但是,应用程序本身及其组件的代码可以在react/features文件夹中找到,本节前面对此进行了解释。

./conference.js 这个文件可以在项目的根目录中找到,它包含用户和会议室之间任何交互的基础。这包括建立与它的连接、加入会议室、静音和取消静音,还包括收集会议室中参会者的信息。

./lang 此文件夹包含Jitsi Meet中的所有不同翻译。对应翻译可以在代码中通过对应的键值获取到,同时翻译映射中的每个键值都可以在main-[language].json文件中找到。

./css 此文件夹包含项目中使用的所有css。这些文件(主要是.scss filesscss)被划分为它们所使用的React功能。

  • 1
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
wbq

wbq

15 篇文章 0 粉丝
关注

JitsiMeet-架构

2023-08-08 15:27:53 114阅读

架构

本节对JitsiMeet基础设施进行了全面概述。如果您刚开始接触该项目,我们强烈建议您彻底阅读本节。
 

组件

Jitsi包含以下一系列项目(collection of projects)
  • Jitsi Meet - 兼容WebRTC的JavaScript应用程序,使用JitsiVideobridge提供高质量、可扩展的视频会议。基于React和React Native构建。
  • Jitsi Videobridge (JVB) - WebRTC兼容服务器,用于在会议参与者之间路由视频流。
  • Jitsi Conference Focus (jicofo) - Jitsi Meet会议中使用的服务器端焦点组件,用于管理媒体会话,并充当每个参与者和视频桥之间的负载均衡器。
  • Jitsi Gateway to SIP (jigasi) - 服务器端应用程序,允许常规SIP客户端加入Jitsi Meet会议
  • Jitsi Broadcasting Infrastructure (jibri) - 一组用于录制和/或流式传输Jitsi Meet会议的工具,其工作方式是启动在虚拟帧缓冲区中渲染的Chrome实例,并使用ffmpeg捕获和编码输出。
Jitsi使用的外部软件:
  • Prosody - 用于信令的XMPP服务器

SIP:

SIP会话(Session)是两个用户终端之间(也可能是多个用户之间)基于IP网络的会话,即VoIP会话;会话的媒体一般是语音、视频、也可能有其他形式。

SIP协议本身只负责会话的建立,具体来说,就是在两个用户终端之间通过SIP消息交换传递消息,完成会话的建立;会话建立过程中的一个关键点是交换发送/接受会话媒体的地址及相关参数,即媒体描述;媒体描述是通过SDP来完成的;会话建立以后,两方得到了彼此的媒体地址之后,就可以向对方发送媒体,开始通话。媒体传输是通过RTP(实时传输协议)完成的。SDP、RTP,与SIP协议是相对独立的。
 

架构图

下图描述了前面描述的组件之间的各个连接以及它们的外部集成。
 
 
外部连接可分为两大类。首先,通过远程请求和数据流执行的请求视频或音频连接的客户端之间的连接。第二类外部连接是与外部服务的连接,这些服务有助于存储录音、流式录制、流式视频或帮助创建会议。
 

代码库结构

在本节中,我们将查看代码库的主要部分,并了解它们的用途。

./react/features 这个文件夹是最好开始编写代码的地方,因为它包含了安卓和iOS应用程序以及Web版本中使用的大多数应用程序组件。这个源文件夹又被分为Jitsi提供的所有不同功能,如身份验证、聊天交互、键盘快捷键、屏幕截图捕获、远程控制和虚拟背景。这些特性中的每一个在这个目录下都有自己的文件夹,然后将其再次拆分,以在整个代码中保持层次结构和一致性。

每个功能文件夹都由一个名为components的子文件夹组成,在该文件夹中,所有React或对于移动设备的React Native组件都被表示出来。通常在这个文件夹中,本地组件和web组件之间会有一个分离,但在某些情况下,相同的组件可以用于Android、iOS和web浏览器,在这种情况下不会进行分离。

如前所述,代码库主要由React和React Native组成,后者是移动应用程序的React版本。大多数功能都使用了React class-comp所谓的类组件,但一些新功能开始使用hooksfunc-comp编写功能组件的新方法。

该应用程序还使用React Redux,它被用作通用状态存储,以跟踪整个应用程序中使用的重要参数。更多关于React Redux的信息可以在这里找到react-redux

大多数功能还包含一个名为middleware.js的文件。该文件充当了组件和应用程序其余部分功能之间的桥梁。

./modules/external-api 在此文件夹中,可以找到外部API。此API可用于各种事件,如参会者加入/离开会议、头像或聊天的更改,以及使用麦克风或相机时的错误。

./android and ./ios 这两个文件夹分别包含Android和iOS应用程序的基础知识。但是,应用程序本身及其组件的代码可以在react/features文件夹中找到,本节前面对此进行了解释。

./conference.js 这个文件可以在项目的根目录中找到,它包含用户和会议室之间任何交互的基础。这包括建立与它的连接、加入会议室、静音和取消静音,还包括收集会议室中参会者的信息。

./lang 此文件夹包含Jitsi Meet中的所有不同翻译。对应翻译可以在代码中通过对应的键值获取到,同时翻译映射中的每个键值都可以在main-[language].json文件中找到。

./css 此文件夹包含项目中使用的所有css。这些文件(主要是.scss filesscss)被划分为它们所使用的React功能。

文章来自专栏

音视频开发

3 篇文章 1 订阅
0 评论
0/1000
评论(0) 发表评论
  • 1
    点赞
  • 0
    收藏
  • 0
    评论