Guide:
As online meetings are becoming more and more common, companies are paying more attention to this environment and expect to have their own conference system to facilitate work and communication; NetEase Yunxin has been deeply engaged in research and development in the field of communications for 24 years, based on this Ability to create a mature conference system and open source it, I hope to contribute my own strength, this article will introduce the desktop side.
1. How to choose UI
For desktop applications, there are many UI choices, and there are mature and easy-to-use frameworks under different platforms, whether for rapid development, performance, or visual effects, there are many choices.
Based on our scenario, we need to support Windows and macOS systems, that is, cross-platform, and there are many cross-platform solutions. Qt, Electron, Flutter, etc. have their own merits; the video in the conference scene, as the basic core, needs to be able to support multi-channel video Streaming rendering, of course, would be better if it was HD video, so performance is an important factor in our consideration.
In order to make better use of system resources, we hope to use local rendering, use hardware acceleration as much as possible, and improve rendering efficiency. Combined with other factors, we use Qt as our UI framework, and Qt is an old cross-platform UI framework. The advantages and disadvantages are self-evident. Yu, choose the right is the best.
Second, the desktop
(1) The frame of the desktop
The overall frame is shown in the following figure:
- App: The front-end uses Qt to build the entire application, including some functions such as registration, login, membership, etc. Users can refer to the relevant calling interface and can fully customize their own App.
- SDK: The UI SDK of the conference component, including all functions in the conference, also provides external interfaces.
- IPC: As a bridge between App and SDK, it is responsible for data communication. This module implements the interface call through Socket combined with asynchronous task queue, in which the App creates the Server as the Server side, pulls up the UI process of the SDK and passes the port number, and then monitors the Client link. The Client uses the port to connect to the Server and establish a key connection with it. . The figure below is a rough schematic.
The advantages of using a dual-process solution for App and SDK:
- There is better isolation, making the SDK more stable.
- Improve system resource utilization and avoid resource preemption with the SDK host process.
(2) SDK
The SDK provides an external integration interface, as well as a UI module in the meeting. Users can easily complete the integration based on this simple interface.
- UI layer: It includes some UI interfaces in the meeting, such as video view display, chat display, member list display, live broadcast, whiteboard display, etc.
- Service layer: encapsulates business modules according to business.
- Control layer: business encapsulation of capability layer modules.
- Base layer: capability module, basic module.
3. Access method
(1) The desktop terminal provides a wealth of access interfaces, as listed below
- C++ mode: Provides a set of common C++ interfaces that can be integrated natively in Windows and macOS.
- Electron method: Provides a JS-based interface with an interface consistent with C++, which is easy to integrate into Electron applications.
(2) Interface capabilities provided by the SDK
- According to the meeting scenario, authentication, account, meeting and other services are provided to meet the capabilities of the App.
(3) Advantages of SDK
- The componentization is high, the interface is simple and stable, and it can be accessed easily and quickly.
- Customizable, UI can be integrated into your own system in a custom way.
4. Conclusion
The above mainly introduces the architecture and some businesses of the conference and components, hoping to help users clarify the architecture and some module relationships, and understand the internal implementation and logic; of course, in actual development, there will also be some key technical points and difficulties in some modules. , we also have corresponding solutions, and we hope to introduce you in detail in the future pages.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。