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

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

2个月前,正式发布的 Avalonia 11 是一个重大更新的版本,它将核心框架、渲染和Skia渲染器都统一到了 .NET 6+ 上,并带来了大量的改进。而且Avalonia 11 内置了高质量的 Fluent 2​ 风格控件,视觉效果与现代的 Windows 11 应用完全看齐,开箱即用。所以目前来看,.NET 生态中跨平台UI开发,使用 Avalonia 是最有前景的。
之前我使用CPF.NET UI 框架开发了一套跨平台视频会议系统的Demo,能稳定地在Windows和信创系统(银河麒麟、统信UOS)上运行,随着Avalonia的势头越来越猛,现在看来有必要也出一个Avalonia的版本。

Avalonia版本在银河麒麟V10 SP1 上的运行效果如下图所示:

OVCS_Avalonia01

一.开发环境

1.开发工具:

Visual Studio 2022

2.开发框架:

.NET 8.0

3.开发语言:

C#

4.UI 框架:

Avalonia 11.3

二. 视频会议Demo主要功能

1.多人 视频/语音/文字 会话。

(1)视频编码质量根据网络状况动态调节。

(2)优先保证语音质量。

(3)支持回音消除(AEC)、噪音抑制(DENOISE)、自动增益(AGC)、静音检测(VAD) 等语音技术。 

(4)支持两种视窗布局风格: 1x1,2x2,3x3 分屏显示。

2.屏幕分享

(1)桌面编码质量根据网络状况动态调节。

(2)房间内任何一个成员都可以共享自己的桌面,其他成员都可以观看该桌面。

(3)共享者可以授权给其他成员来操作自己的桌面。

3.多人协作 电子白板。

(1)支持常用的视图元素、可插入图片、截屏,可将整个白板保存为位图。

(2)提供观看模式和控制模式两种选择。

(3)断线自动重连,始终保持白板内容为最新。

三. 源码项目说明

整个解决方案如下图所示:  

    OVCS_Avalonia02

解决方案由三个项目组成:

(1)OVCS.Core :是公共类库,用于定义视频会议中服务端和客户端都需要使用到的信息,比如消息协议、公共Entity等。

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

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

(2)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;
}

四. 源码下载与运行

源码下载:OVCS.Avalonia.rar

(如果需要本Demo的Winform端、WPF端、安卓端或iOS端源码,可以联系我获取)

(1)Windows 运行

    先在目标电脑上安装.NET 8.0 Framework,无论是服务端还是客户端,直接将bin\Debug目录下的.net8.0文件夹拷贝到目标电脑上,双击.exe即可。

(2)Linux 或 信创国产OS运行

         根据目标电脑的CPU架构类型(比如X64、arm、mips、loongarch),安装对应的.NET 8.0 Framework,无论是服务端还是客户端,直接将bin\Debug目录下的.net8.0文件夹拷贝到目标电脑上,进入.net8.0目录,打开终端,

    使用dotnet命令运行。比如运行客户端:

dotnet OVCS.ClientAvalonia.dll

 

http://www.zskr.cn/news/76622.html

相关文章:

  • 2025上海留学机构推荐
  • 2025上海留学中介机构排名前三的有哪些
  • 2025上海留学中介排名
  • 2025.101.11
  • 2025年高复购雷达干扰模拟器品牌排行榜TOP10,光通信测量仪表/无线信号测量仪表/电子对抗设备/以太网测试仪雷达干扰模拟器企业口碑推荐
  • 从pid获取exe窗口名称
  • 半月分期客服妙招帮你脱困省油大空间低配拆解银河A7的“水桶车细节值得吵一架
  • 2025年中国矿用采煤机截齿头公司排名:旋挖钻机截齿头、矿山
  • 2025抗老面霜“红榜”发布:国货成分黑马逆袭,敏感肌也有专属推荐
  • 2025年网站建设公司TOP10综合排名:商业洞察、数字体验与持续运维3大战略评测选择指南
  • 深度学习在神经影像中的应用
  • 冬季抗老精华怎么选?冬季必入的这款次抛精华,实测数据太惊艳!
  • 2025年高阳毛巾厂家权威推荐榜单:竹纤维浴巾‌/高阳浴巾‌/儿童浴巾‌‌源头厂家精选
  • 2025.10.5
  • 2025年评价高的铝艺围栏/铝艺屏风厂家最新推荐排行榜
  • Avalonia Dialog展示在父组件中间位置
  • 私人恒温恒湿雪茄房与会所酒窖设计全解析
  • 迎湖办公室装修:满足个性化需求,靠谱又高性价比
  • Detectron2库 - 教程
  • 河北唐山迁西县农村自建房口碑推荐排行榜。2026年迁西县自建房公司权威测评优选。
  • 永清县自建房找谁好?河北廊坊永清县自建房公司 / 机构深度评测口碑推荐榜​
  • 2025年评价高的6082铝板厂家推荐及选择指南
  • 2026年河北石家庄无极县农村自建房推荐榜,图南建房宝领衔 六家实力公司赋能乡村宜居生活
  • 2025年管母线厂家权威推荐榜单:绝缘管型母线/全屏蔽绝缘铜管母线/管母线源头厂家精选
  • 2025年知名的7075铝材/铝棒铝材厂家推荐及采购参考
  • 批量处理多个excel文件去公式的方法
  • 2025年质量好的苏州喷砂机TOP实力厂家推荐榜
  • 饶阳县农村自建房找谁好?河北衡水饶阳自建房公司/机构深度评测口碑推荐榜
  • Solon AI 开发学习18 - generate - 生成示例参考
  • 纳秒绿光vs红外皮秒,哪款激光器更适合玻璃切割打孔?-外协加工-委外加工-专注于河南郑州激光微纳代加工-激光切割雕刻打孔打标镭雕焊接划线表面处理-芯晨微纳(河南)光电科技有限公司