# AvaloniaDemo **Repository Path**: smallcore/avalonia-demo ## Basic Information - **Project Name**: AvaloniaDemo - **Description**: Avalonia 实现跨平台的视频会议(Windows、Linux、信创) 原文:https://www.cnblogs.com/shawshank/p/19305884 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 7 - **Created**: 2025-12-08 - **Last Updated**: 2025-12-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: Avalonia, 视频会议, 屏幕共享 ## README # 前言 这两年.NET 生态在跨平台桌面开发领域有了明显突破。尤其是 Avalonia 的快速演进,让大家终于有了一个真正能替代 Electron 的原生方案。 两个月前发布的 Avalonia 11 更是关键一步——它不仅将整个渲染栈统一到 .NET 6+,还内置了高质量的 Fluent 2 风格控件,视觉体验几乎和 Windows 11 原生应用无异。作者重新审视之前用 CPF.NET 开发的视频会议Demo:既然 Avalonia 已经如此成熟,何不移植一版? 本文将介绍基于 Avalonia 11.3 + .NET 8 的跨平台视频会议客户端,不仅能在 Windows 上流畅运行,也顺利跑在银河麒麟 V10 SP1 等国产信创系统上。 ## 项目介绍 OVCS.Avalonia 是一个功能完整的视频会议系统原型,包含服务端与客户端,目标是验证 Avalonia 在复杂多媒体场景下的可行性。 项目延续了原有架构,但 UI 层全面重构为 Avalonia 实现,充分利用其跨平台能力与现代化设计语言。无论是企业内部协作,还是国产化替代场景,这套方案都具备实际落地价值。 ## 项目功能 ### 1、多人音视频会话 支持动态调节视频码率以适应网络波动,语音优先保障;集成 AEC(回音消除)、DENOISE(降噪)、AGC(自动增益)和 VAD(静音检测),确保通话清晰;提供 1×1、2×2、3×3 多种分屏布局。 ### 2、屏幕共享 任意成员可发起桌面共享,画面质量随网络自适应;支持远程控制授权,实现协同操作。 ### 3、电子白板协作 支持绘图、插入图片、截屏,内容可导出为位图;区分"观看"与"控制"模式;断线后自动重连并同步最新白板状态。 ## 项目特点 **真跨平台** 同一套代码编译后,可在 Windows 7/10/11、银河麒麟、统信 UOS 等系统运行; **现代 UI 体验** Avalonia 11 的 Fluent 2 控件开箱即用,界面简洁、动效流畅,符合当代审美; **轻量高效** 相比基于 Web 技术的方案,资源占用更低,启动更快; **国产化** 已在主流信创 OS 实测通过,适配 X64、ARM、LoongArch 等多种 CPU 架构。 ## 项目技术 1、开发工具:Visual Studio 2022 2、开发框架:.NET 8.0 3、开发语言:C# 4、UI 框架:Avalonia 11.3 ## 项目说明 解决方案由三个项目组成 ![](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/141ccd84d7674d058d26dc2e990d25c1~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=e9ecf3d6&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1765290232&x-orig-sign=WEe7BbJEB%2BzN30cJ3KJ%2BDxsJi2k%3D) ### 1、OVCS.Core:是公共类库 用于定义视频会议中服务端和客户端都需要使用到的信息,比如消息协议、公共 Entity 等。 请特别注意 GroupExtension 类,该类用于记录当前会议的状态,如主持人是谁、谁开启了桌面共享、谁开启了电子白板等。 ``` public class GroupExtension {     ///      /// 主持人ID     ///      public string ModeratorID { get; set; }     ///      /// 正在共享远程桌面的用户ID     ///      public string DesktopSharedUserID { get; set; }     ///      /// 主持人是否开启白板     ///      public bool IsModeratorWhiteBoardNow { get; set; } } ``` ### OVCS.Server 视频会议的服务端,控制台程序,基于 .NET 8。 服务端在 CustomizeInfoHandler 类中处理来自客户端的请求消息,特别是 MultimediaServer_CustomizedMessageReceived 事件处理函数中。 CustomizeInfoHandler 的初始化函数定义如下: ``` public void Initialize(IMultimediaServer server) {     this.chatGroupManager = new ObjectManager();     this.multimediaServer = server;     this.multimediaServer.CustomizedMessageReceived += MultimediaServer_CustomizedMessageReceived;     this.multimediaServer.UserDisconnected += MultimediaServer_UserDisconnected;     this.multimediaServer.SomeoneJoinChatGroup += MultimediaServer_SomeoneJoinChatGroup; } ``` ### 3、OVCS.ClientAvalonia 视频会议的客户端,Avalonia 实现 UI,基于 .NET 8。 客户端的视频会议主要业务在 MainWindow.axaml 中实现,并在 Multimedia_CustomizedMessageReceived 函数中处理来自服务端的消息。 MainWindow 的初始化函数定义如下: ``` internal void Initialize(string _roomID) {     App.Multimedia.OutputVideo = true;     App.Multimedia.SpeakerVoiceNotified += Multimedia_SpeakerVoiceNotified;     App.Multimedia.CustomizedMessageReceived += Multimedia_CustomizedMessageReceived;     App.Multimedia.ConnectionInterrupted += Multimedia_ConnectionInterrupted; } ``` ## 项目效果 在银河麒麟 V10 SP1 上实测,客户端启动迅速,界面渲染流畅,Fluent 2 风格控件与系统融合自然。视频通话延迟可控,语音清晰无回声;屏幕共享画面更新及时,白板操作响应灵敏。即使在网络波动下,系统也能自动降级保语音,体验接近商业产品。更重要的是,部署极其简单——只需拷贝 .net8.0 文件夹,无需安装额外依赖。 ![cb081789e3504110b3c80c47755ca4d9_513369-20251205152024684-447501557.png](https://p0-xtjj-private.juejin.cn/tos-cn-i-73owjymdk6/c5d0d1c510bf40d8bd8e091678bfe795~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5bCP56CB57yW5Yyg:q75.awebp?policy=eyJ2bSI6MywidWlkIjoiMTMwODg3NjE1NTM5NTczOSJ9&rk3s=e9ecf3d6&x-orig-authkey=f32326d3454f2ac7e96d3d06cdbb035152127018&x-orig-expires=1765290363&x-orig-sign=24Bgh%2F%2BIChWS6ICzIzEiFs03N7Y%3D) ## 项目源码 项目结构清晰,适合学习或二次开发: - Windows 安装 .NET 8 后,直接双击 .exe 即可运行; - Linux 或信创系统用户,进入 .net8.0 目录执行 `dotnet OVCS.ClientAvalonia.dll` 启动客户端; - 服务端同样为控制台程序,部署方式一致; Gitee: ## 总结 Avalonia 的崛起为 .NET 开发打开了一扇通往真正跨平台原生应用的大门。OVCS.Avalonia 不仅是一次技术迁移,更是对 Avalonia 在复杂业务场景下能力的一次验证。 它证明了:不用 Electron,不用 WebView,我们依然能做出高性能、高颜值、跨平台的桌面应用,甚至还能跑在国产操作系统上。如果大家也在找 .NET 跨平台 UI 方案,Avalonia 值得认真考虑。 ## 关键词 Avalonia、.NET 8、视频会议、跨平台、信创、Fluent 2、屏幕共享、电子白板、C#、开源