导读:
随着线上会议越来越广泛,各企业在这种环境下也更加器重,冀望可能领有一套本人的会议零碎,不便开展工作和交换;网易云信在通信畛域研发深耕 24 年,基于此能力打造了一款成熟的会议零碎并将其开源,心愿奉献本人的一份力量,本文将介绍下其中的桌面端。
一、UI 如何抉择
对于桌面的利用,抉择的 UI 有很多,在不同的平台下都有成熟好用的框架,无论是出于疾速开发、性能、视觉效果都有多种抉择。
基于咱们的场景,须要反对 Windows 和 macOS 零碎,也就是要跨平台,跨平台计划也较多,Qt,Electron,Flutter 等都各有千秋;会议场景中的视频,作为根底外围,须要可能反对多路视频流的渲染,当然如果是高清视频会更好,因而性能也就是咱们思考中的重要一项。
为了更高的利用系统资源,心愿应用本地渲染,尽可能的应用硬件加速,进步渲染效率,联合其余因素咱们采纳 Qt 作为咱们的 UI 框架,Qt 作为老牌的跨平台 UI 框架,优缺点显而易见,抉择适宜的才是最好的。
二、桌面端
(一)桌面端的框架
框架整体如下图所示:
- App:前端应用 Qt 搭建整个利用,包含注册登录,入会等一些性能,用户能够参考相干调用接口,齐全可能定制本人的 App。
- SDK:会议组件的 UI SDK,包含会中的所有性能,也提供了对外的接口。
- IPC:作为 App 与 SDK 之间的桥梁,负责数据的通信。此模块是通过 Socket 联合异步工作队列实现接口的调用,其中 App 作为 Server 端创立 Server,拉起 SDK 的 UI 过程并传递端口号,而后监听 Client 链接,Client 应用端口来链接 Server,与之建设键连贯。下图是个大抵示意图。
App 和 SDK 采纳双过程的计划长处:
- 有更好的隔离,使得 SDK 更稳固。
- 进步系统资源利用率,防止与 SDK 宿主过程资源抢占。
(二)SDK
SDK 提供了对外的集成接口,也提供了会中的 UI 模块,用户能够基于此简略的接口,很容易实现集成。
- UI 层:包含了会中的一些 UI 界面,比方视频视图展现,聊天展现,成员列表展现,直播,白板展现等。
- Service 层:依照业务对业务模块的封装。
- Control 层:对能力层模块的业务封装。
- Base 层:能力模块,根底模块。
三、接入形式
(一) 桌面端提供了丰盛的接入接口,如下所列
- C++ 形式:提供了一套通用的 C ++ 接口,能够在 Windows 和 macOS 里通过原生的形式集成。
- Electron 形式:提供基于 JS 的接口,具备和 C ++ 统一的接口,不便集成到 Electron 利用中。
(二)SDK 提供的接口能力
- 依据会议的场景,提供了鉴权、账户、会中等服务,满足 App 端的能力。
(三)SDK 的长处
- 组件化程高,接口简略稳固,可能简略快捷的接入。
- 可定制化,UI 可通过自定义的形式,集成到本人的零碎中。
四、结语
以上次要介绍了会议和组件的架构和一些业务,心愿可能帮忙用户理清架构和一些模块关系,理解外部实现和逻辑;当然在理论开发中,也会遇到一些关键技术点和局部模块的难点,咱们也有相应的解决方案,心愿在当前的篇幅中可能为您具体介绍。