当前位置: 首页 > news >正文

.NET 8 + Avalonia 实现跨平台的视频会议(Windows、Linux、信创)

目录

前言

项目介绍

项目功能

1、多人音视频会话

2、屏幕共享

3、电子白板协作

项目特点

项目技术

项目说明

1、OVCS.Core:是公共类库

OVCS.Server

3、OVCS.ClientAvalonia

项目效果

项目源码

Gitee:https://gitee.com/smallcore/avalonia-demo

总结


前言

这两年.NET 生态在跨平台桌面开发领域有了明显突破。尤其是 Avalonia 的快速演进,让大家终于有了一个真正能替代 Electron 的原生方案。

两个月前发布的 Avalonia 11 更是关键一步——它不仅将整个渲染栈统一到 .NET 6+,还内置了高质量的 Fluent 2 风格控件,视觉体验几乎和 Windows 11 原生应用无异。C# 实现 Linux 视频会议(支持信创环境,银河麒麟,统信UOS)作者重新审视之前用 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

项目说明

解决方案由三个项目组成

1、OVCS.Core:是公共类库

用于定义视频会议中服务端和客户端都需要使用到的信息,比如消息协议、公共 Entity 等。

请特别注意 GroupExtension 类,该类用于记录当前会议的状态,如主持人是谁、谁开启了桌面共享、谁开启了电子白板等。

public classGroupExtension { /// <summary> /// 主持人ID /// </summary> publicstring ModeratorID { get; set; } /// <summary> /// 正在共享远程桌面的用户ID /// </summary> publicstring DesktopSharedUserID { get; set; } /// <summary> /// 主持人是否开启白板 /// </summary> publicbool IsModeratorWhiteBoardNow { get; set; } }

OVCS.Server

视频会议的服务端,控制台程序,基于 .NET 8。

服务端在 CustomizeInfoHandler 类中处理来自客户端的请求消息,特别是 MultimediaServer_CustomizedMessageReceived 事件处理函数中。

CustomizeInfoHandler 的初始化函数定义如下:

public void Initialize(IMultimediaServer server) { this.chatGroupManager = new ObjectManager<string, ChatGroup>(); 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 文件夹,无需安装额外依赖。

项目源码

项目结构清晰,适合学习或二次开发:

  • Windows 安装 .NET 8 后,直接双击 .exe 即可运行;

  • Linux 或信创系统用户,进入 .net8.0 目录执行dotnet OVCS.ClientAvalonia.dll启动客户端;

  • 服务端同样为控制台程序,部署方式一致;

Gitee:https://gitee.com/smallcore/avalonia-demo

总结

Avalonia的崛起为 .NET 开发打开了一扇通往真正跨平台原生应用的大门。

OVCS.Avalonia 不仅是一次技术迁移,更是对 Avalonia 在复杂业务场景下能力的一次验证。它证明了:不用 Electron,不用 WebView,我们依然能做出高性能、高颜值、跨平台的桌面应用,甚至还能跑在国产操作系统上。

如果大家也在找 .NET 跨平台 UI 方案,Avalonia 值得认真考虑。

引入地址

http://www.gsyq.cn/news/1615579.html

相关文章:

  • 遗传算法实战:Python手写N皇后求解器详解
  • 3步搭建免费数字标牌系统:LibreSignage让你的旧设备变身专业广告屏
  • 揭秘微信小程序解包:wxappUnpacker如何让你看见小程序的“源代码“
  • Platinum-MD:让尘封的MiniDisc设备重获新生的终极指南 [特殊字符]
  • 如何评估 AI 回答中品牌解释能力的稳定性?
  • 不会写代码怎么选股票量化软件:回测、盯盘和风控要看哪些模块
  • 国产智能机器人品牌选型:如何评估技术认可度与方案通用性?
  • 让Windows任务栏焕然一新:TranslucentTB透明美化工具完全指南
  • uniapp上架苹果应用商店遇到4.3a问题? 如何百分百解决?(2026)
  • GTA5线上小助手:终极免费开源工具让你的洛圣都冒险更自由
  • 摩托车无钥匙启动便捷你真的了解吗?揭秘移动管家摩托车无钥匙系统背后的三大优势
  • E-Hentai下载器:一键批量打包图片资源的终极方案
  • 开源教育系统MeEdu:如何通过多云架构解决在线教育视频分发的高可用挑战
  • GTA5线上小助手:如何通过开源工具集提升你的游戏体验
  • 抖音批量下载终极指南:5分钟掌握无水印视频批量下载技巧
  • 完整标准 Git 新建项目流程(分两种场景:全新本地项目、克隆远程空仓库)
  • 小红书全自动评论脚本已经连续运行7分钟----大概率能稳定运行了
  • 逆向解析短视频应用加密参数:X-Gorgon签名与MAS加密算法详解
  • 收藏!AI小白必看:2026年最该懂的6个AI概念,轻松入门大模型
  • 废掉80%网站流量的,居然是小小的评论区!
  • 拆解开题创作全流程:paperxie 智能开题生成功能,一站式解决毕业生写作卡点
  • 如何用Typora LaTeX主题3步搞定学术论文排版?
  • LLM推理KV Cache优化实战:显存压缩与成本分析
  • Mythos大模型的三大推理突破:图谱锚定、可验证路径与跨文档同步
  • 浏览器的调试工具被禁用如何解决?
  • 终极指南:如何用DS4Windows将PS4/PS5手柄变身为PC游戏控制器
  • 亲测有效!Flutter/OC项目4.3a拒审零套路通关指南✅ 无代过纯干货
  • 从项目管理看企业活动策划:如何把一场发布会拆解为可交付系统
  • UVA340 猜数字游戏的提示 Master-Mind Hints
  • 如何用Python命令行工具打造你的终极个人音乐库:netease-cloud-music-dl完全指南