从产品需求侧讲,一个VDI的产品具备如下的一些主要特性。
| 移动设备支持 |
| 终端管理数量限制 |
| 文件传输 |
| 远程重启 |
| 远程打印 |
| 局域网唤醒 |
| 客户端自定义别名 |
| 定制品牌 |
| RestfulAPI |
| 地址簿 |
| 会话录制 |
| 命令行界面 |
| 会话记忆 |
| 双重安全认证 |
| 端到端加密 |
| 禁用自动更新 |
| 自动断开 |
| 隐私模式 |
| 用户管理 |
| 白板 |
| 文字聊天 |
| 会话邀请 |
本文不会针对这些产品功能做具体开发的介绍,也不包含包括VDS相关的一些概念,内容的涉及。
而是着重在最基础的能力,虚拟化显示器,桌面环境,和webrtc呈现流转方面,没有提供很多代码,主要是设计思路和方法。从而具备一个VDI基础的核心实现。从这个出发点来讲,我们的VDI Demo具备以下的主要特性
- 虚拟化显示器
- 虚拟化桌面内容
- 传递远程服务器的鼠标和键盘信息
- 网络自适应下的图像适配
- 多用户下的状态隔离
个人技术博客: fuqifacai.github.io
更多技术资讯下载: 2img.ai
相关配图由微信小程序【字形绘梦】免费生成


一 虚拟化显示器
由于我们的VDI产品服务器端程序,运行在服务器端,然而往往服务器端是不安装实际显示器的。
此时有几种方案,虚拟整个操作系统,或者只虚拟显示器内容。我们采用后者,这样成本小一些。
目前这方面涉及到驱动级别的虚拟化,开源的方案有很多。下面是一个我们体验过后的比较列表。
| Project | Iddcx version | Signed | Gaming | HDR | H-Cursor | Tweakable | Controller |
| usbmmidd_v2 | 未曾尝试 | ✅ | ❌ | ❌ | ❌ | ||
| IddSampleDriver | 可以用出现显示器了。需要几个添加几个驱动即可 | 1.2 | ❌ | ❌ | ❌ | ❌ | |
| RustDeskIddDriver | 太繁琐了。demo编译太累 | 1.2 | ❌ | ❌ | ❌ | ❌ | |
| Virtual-Display-Driver (HDR) | 可以用。出现显示器了。需要几个添加几个驱动即可 | 1.10 | ❌ | ✅ | ❌ | ||
| virtual-display-rs | 安装OK,运行错误 | 1.5 | ❌ | ❌ | ❌ | ✅ | |
| parsec-vdd | 独立DEMO达到预期,需要几个自己添加几个,然后系统显示器配置具体行为即可 | 1.4 | ✅ | ✅ | ❌ | ✅ | 🆗 |
实际上按照你的情况选择对应的需求。
但基本上都是基于IDD的那一套。
用这个方案的思路是,模拟出来真实的显示器,从而让操作系统在绘制系统层确保屏幕输出的内容。使得我们第二部的虚拟远程桌面内容得以低成本实现。
剩余内容需解锁后查看
Paragoger衍生者AI训练营。发布者:稻草人,转载请注明出处:https://www.shxcj.com/archives/6740