之前写过一篇让RDP硬件加速并且跑到60帧,当时环境是Windows Server 2019,确实可以到60帧。但是换成最新的Windows 10系统后,修改注册表无济于事,而且还有各种报错……遂寻找其他局域网内串流的方式。
后来发现了Moonlight,这个软件利用NVIDIA SHEILD串流(本来是需要专门的SHEILD设备),有安卓、linux、windows等各种版本。NVIDIA SHIELD是Geforce Experience的一个功能,……只有n卡支持。实际效果相当不错,1080p 60帧很稳,画面效果也不错(没有RDP那么容易糊),最大可以设置150Mbps码率。
Moonlight项目地址: moonlight:https://github.com/moonlight-stream
首先需要在电脑端设置SHIELD,安装NVIDIA Experience,在设置中打开SHEILD,添加你想要串流的程序。如果要串流桌面,点击“添加”后选择C:/Windows/System32/mstsc.exe
。
然后在Moonlight中自动搜索出局域网下开启SHIELD的机器,经过口令校验即可连接。
在Moonlight的设置中可以设置帧率、分辨率(只是在客户机上显示的分辨率,不影响被控机)、码率。
快捷键:
视频效果可以说非常好,高码率设置下一点不糊(默认码率也没观察到明显的糊),颜色饱满,同时还能保持稳定的60帧传输,可以说是原生的体验(比Steam串流好得多)。毕竟是N卡的硬件级支持。
移动鼠标时还是会感到有延迟,这个延迟可以通过设置 高帧率(比如90帧120帧)来压低,90帧下鼠标的延迟就几乎感觉不到了。设置高帧率需要在设置中打开“Unlock unsupport FPS options”,然后设置60帧以上的帧率。注意帧率太高会引起画面撕裂。
但是Moonlight不能算得上真正的远程桌面,主要有以下几个问题:
于是我又搭配了noMachine使用,这个是个功能相当齐全的远程桌面软件,支持USB重定向(可以把整个键盘接到远程电脑上),可以在锁屏的情况下连接。noMachine也有60帧的设置,但是实测效果不佳,所以仅仅是搭配使用。
注:NoMachine和Moonlight都无法实现RDP那样保持物理显示器那端是锁屏状态,而且要求有显示器负载,否则会出现严重的显示BUG。可以用假负载/显卡欺骗器来代替,HDMI转VGA的转换器也有同样功效,反正显卡上要插点东西就对了。