通俗的开头:试遍了市面上的远程桌面,离我需要在 mac 上玩 win 游戏至少 60 帧且能免费不折腾的需求都还有些差距,所以我决定自己写一个。
之前由于工作原因没有时间来做,在去年底失业玩了 3 个多月且求职屡屡碰壁并看在还有些积蓄的时候,我开始下决心做好这件事。
目前已发布 0.1.2 版本,基于 tauri 和 egui 使用 Rust 开发,tauri 用于主界面这种性能要求不高但是 ui 业务逻辑有点复杂的地方,egui 用于远程桌面窗口这种性能要求较高但仅需要少量 ui 的地方,桌面图像使用 opengl 绘制。tauri 和 egui 理论上桌面和移动平台都支持,但是目前我还是只主要测试了 Windows 和 macOS 平台,其他平台的支持会慢慢加上去(取决于我的精力😂)
全部的 3 个组件,包括客户端、信令服务器、中转服务器都完全开源,基于 p2p 打洞的方式正在研究中。
视频的编解码目前限制在 h264 软编软解,h265 、vp9 和硬件编解码在测试稳定后会加入到编码方式设置里。
https://github.com/MirrorX-Desktop/MirrorX
我现在是无业状态,每晚会在 B 站直播写这个项目的代码,有兴趣的 V 友可以来看看: http://live.bilibili.com/9020546
另外还是希望能找到一份远程的工作,能解决我的生存问题并继续投入在这个项目里,本人经验 go4 年,rust 不到 1 年,有意的请留言或联系~
最后希望 V 友们能给仓库一个 Star ,谢谢啦😁
经过一个月拖拖拉拉的开发后,我又来啦~
昨天发布了v0.1.3版本,带来了全新的UI布局、亮/暗主题以及比较重要的局域网发现与直连功能,个人测试在局域网基本可以秒开。
本次版本也改善了因为目前唯一的自费搭设的服务器在海外导致很多朋友第一次打开时圈圈转不停各种报错等很影响使用体验的问题。
注1:由于本次版本有些破坏性更新,所以下载使用新版前请将旧的mirrorx.db删除,具体删除路径可到Github Release页的详情查看。
注2:很多朋友尝试在虚拟机里使用导致各种报错,由于目前的版本使用了大量的D3D11和opengl的api且没有fallback,如果虚拟机不支持硬件加速或没有开启硬件加速,就会导致D3D设备创建失败或虚拟机系统内的opengl版本过低从而无法正常使用,这点还请各位注意。
1
fzls 2022-11-23 19:30:45 +08:00 2
好厉害,远程桌面感觉开发起来好复杂
|
2
amlee 2022-11-23 19:48:58 +08:00 2
我去,你能自己做这种项目,为啥还找不到工作
|
3
dragonszy 2022-11-23 19:52:16 +08:00 2
战略马克
|
4
ihipop 2022-11-23 19:53:46 +08:00 via Android 1
@amlee 找工作就是个人期望和公司期望至少要有另双方满意的契合点,个人能力和个人经历会影响个人的契合点,公司需求和市场环境会影响公司的契合点,不是单方面的。
|
5
dabaibai 2022-11-23 20:11:57 +08:00 1
大佬厉害。
|
7
xieren58 2022-11-23 20:21:48 +08:00 2
非常牛, 已 star,
|
8
ZxBing0066 2022-11-23 20:44:42 +08:00 1
点个赞
|
9
adoal 2022-11-23 20:48:11 +08:00 1
前有 RustDesk ,后有 MirrorX ,用 Rust 写远程桌面的大业方兴未艾
|
10
bequt 2022-11-23 20:53:13 +08:00 1
感受到 rust 才是桌面软件的未来呀。
|
11
KHfqLAYYS6BKJT3R 2022-11-23 20:53:43 +08:00 1
目前 RustDesk 有两个问题:
1.mbp 息屏后无法唤醒 2.画质不知道能不能进一步提升(现在可以满足使用,想更进一步) 不知 op 开发的有没有改善 |
12
KHfqLAYYS6BKJT3R 2022-11-23 20:54:04 +08:00
@cjzlol #11 息屏->睡眠
|
13
KHfqLAYYS6BKJT3R 2022-11-23 20:58:07 +08:00
0.0 下载了打开一直转圈圈
|
15
cby0414 OP @bequt tauri 或者 egui 或者编译成 c 库集成进 flutter ,都是不错的方案
|
16
zyxk 2022-11-23 23:00:02 +08:00 1
win10 打开闪退, 换了一台, 远程后提示
other error (message="negotiate desktop params failed",file ="mirrorx src\window desktop\statemod.rs",line 303) 另外有个问题是, 输入 id 后, 点击桌面, 要对方点同意后, 才输入密码? 这不应该是 2 选 1 吗? |
17
FightPig 2022-11-23 23:05:39 +08:00 1
牛 p 啊
|
18
fox233 2022-11-23 23:19:27 +08:00 1
太 cool 了 支持局域网用局域网 IP 互联吗 那样延迟会更低 毕竟是同一个网段
|
19
cby0414 OP @zyxk 感谢反馈,另外无人值守或者说是默认信任这个功能会在后续加上,目前缺失功能比较多我只有一个个来,还望理解😂
|
20
cby0414 OP @fox233 局域网目前还需要架设一个中转服务器,不过局域网直连的功能也在计划中,目前缺失的功能还比较多我只有一个个来,还望理解😂
|
21
xumng123 2022-11-24 07:29:44 +08:00 via iPhone 1
强
|
23
okakuyang 2022-11-24 13:18:53 +08:00 1
能开发 ipad 版本吗?我觉得这个比较关键,我这最近 steam link 挂逼了。
|
25
avv 2022-11-24 17:23:55 +08:00 1
参股!参股!参股!参股!
|
26
lizhenda 2022-11-24 19:19:22 +08:00 1
强,这个有技术含量
|
27
qi19901212 2022-11-24 20:21:51 +08:00 1
来加个联系方式,合作一下 s16621672841
|
28
ljsh093 2022-11-24 23:34:27 +08:00 1
期待 iOS 版本
|
29
kice 2022-11-25 05:41:13 +08:00 via Android 1
硬件编解码在 win 上用 dx 会简单些。不过既然都上 ffmpeg ,直接用 ffmpeg 更好。
追求性能可以看看 OBS 的实现。 |
30
aeli 2022-11-25 07:27:15 +08:00 1
厉害,学习学习
|
31
iOCZ 2022-11-25 12:00:10 +08:00 1
怎么控制远程设备的?
|
32
unclemcz 2022-11-25 13:29:46 +08:00 1
最近也在学 tauri ,准备做个剪切板管理器,但是看着 tauri 文档,连门都还没摸到,rust+vue 组合看的一脑浆糊。
我就想问一下,为何楼主你如此优秀,人和人的差距怎么就这么大😂。 |
33
cby0414 OP @kice dx11 只支持硬解,dx12 才支持硬解硬编,考虑到还有大量设备停留在 dx11 ,所以选择了用 ffmpeg 来集成 qsv,amf,envenc 等多种编码器
|
35
cby0414 OP @unclemcz 过奖了😂,tauri 的文档还是比较齐全的也有中文版,把 rust 这边当做写一个后端 web api 服务器就好理解很多了
|
37
tabris233 2022-11-27 12:16:14 +08:00 1
B 站刷到过您
|
40
HulkLee 2022-11-27 22:39:41 +08:00 1
支持原创开源👍,祝早日找到一份满意的工作。
另外,本回复就是在 mac 用 rustdesk 远程 win 来回复的。其实自建 rustdesk 服务器的话是可以满足你的游戏需求的。我就是这么玩的。 |
42
Thinsky313 2022-11-28 10:12:25 +08:00 1
|
43
davinci21s 2022-11-28 11:13:18 +08:00 via iPhone 1
牛逼
|
44
cby0414 OP @Thinsky313 已加~
|
45
allanpk716 2022-11-28 17:50:57 +08:00 1
本地多屏幕支持了吗? 4K 屏幕卡吗?
|
46
cby0414 OP @allanpk716 本地多屏幕是指被控端多个屏幕选择或者多个屏幕同时采集吗?还是控制端可以选择采集哪个屏幕?
|
47
allanpk716 2022-11-29 12:27:10 +08:00
@cby0414 受控端无屏幕,控制端有两个屏幕,是否可以在控制端连接上被控端后,让其支持双屏。类似微软的 mstsc
|
48
Metre 2022-11-29 16:38:11 +08:00 1
厉害了 fork 为敬
|
49
horou 2022-11-29 17:51:38 +08:00 1
太棒了,不仅技术牛 B ,还很有开源精神,已 Star ,希望作者能够坚持下去。
|
50
cby0414 OP @allanpk716 从你的描述看如果被控端没有屏幕,那么就需要虚拟屏幕出来,这个在 Windows 上需要写驱动来支持,linux 上可能可以启动一个桌面服务器,macOS 上目前暂时不知道怎么实现,原理我倒是能摸个大差不差,但是实现起来应该比较费劲,所以暂时没有规划这个功能。
|
51
lookStupiToForce 2022-11-30 18:11:21 +08:00 1
感谢!
正好有同 op 的需求,rdp 和 steamlink 都莫名卡顿( rdp 可能跟微软本身就不打算将之支持游戏有关,压缩算法顾及不到高 fps ; steamlink 就真不知道了),来试一试这个 再次感叹分享区的 v 友真是太棒了! |
52
cby0414 OP @lookStupiToForce 感谢,我看提醒里,老哥你是发了啥被删了 2 次😂
|
53
cby0414 OP @lookStupiToForce 哦不好意思是我看错了😂
|
54
tonytonychopper 2022-12-19 11:45:27 +08:00 via iPhone
@unclemcz 我最近也在做这个,但是我发现 tauri 拿不到剪贴板图片,感觉还得好好学一下 rust 怎么用。。。
|
55
FrankAdler 2022-12-26 16:23:08 +08:00
macOS12.6 下发现一个问题:启动后默认窗口置顶,会挡住所有的应用,且没找到可设置的地方,点击关闭后窗口消失且再也点不开,只能退出重启,最小化正常
|
56
cby0414 OP @FrankAdler 感谢反馈,置顶后续会增加一个开关;窗口关闭是由于窗口的消息循环原因,目前是直接隐藏掉窗体,所以如果关闭后想要复原窗体,需要点击托盘菜单里的显示。
|
57
opentrade 2023-02-13 19:02:17 +08:00
@cjzlol 一直没重视这个熄屏问题,贡献者提交一个小 PR ,会再优化,画面质量现在我们是把 bitrate 卡的比较低,后面会综合优化,提高 bitrate 。
|
58
opentrade 2023-02-13 19:04:04 +08:00
|
59
opentrade 2023-02-13 19:04:50 +08:00
|
61
xiaoxiao168 2023-06-13 13:09:34 +08:00
@cby0414 可以在这里个要求吗?希望可以直接 p2p 加密链接 不需要用 Relay Server 的吗? 当然都是自己的机器 或对方提供 public ip 的情况下, 直接链接。
|