網易會議開源之桌面端篇

導讀:

隨着線上會議越來越普遍,各企業在這種環境下也更加重視,期望能夠擁有一套自己的會議系統,方便展開工作和交流;網易雲信在通信領域研發深耕 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可通過自定義的方式,集成到自己的系統中。

四、結語

以上主要介紹了會議和組件的架構和一些業務,希望能夠幫助用戶理清架構和一些模塊關係,瞭解內部實現和邏輯;當然在實際開發中,也會遇到一些關鍵技術點和部分模塊的難點,我們也有相應的解決方案,希望在以後的篇幅中能夠爲您詳細介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章