远程桌面优化避坑指南

最近发现在局域网中用Windows远程桌面看视频画面有肉眼可见的延迟,测试帧率发现只有33帧,于是在网上找优化方法。网上的优化方案就几种,但都基本只讲如何设置,没说明原因。经过测试发现,有些设置不仅没有效果,还会产生“负优化”。所以还是有必要分享一下。

我运行的环境是Windows 10 21H2 专业版和Windows 11 21H1专业版,此次测试并非全面测试,只记录在自己在使用中的效果。不同的系统版本有可能结果不一样。

提升帧率

正常情况下,帧率达到60Hz,体验才会和本地一至。我们平时用的显示器最少也是60Hz,电竞的达到120Hz甚至144Hz。

Windows远程桌面是支持60帧的,需要修改注册表。

在远程会话和远程会话Windows 8帧速率Windows Server 2012 30 FPS

上图出自官方文档:docs.microsoft.com/zh-cn/troubleshoot/windows-server/remote/frame-rate-limited-to-30-fps

也可以把下面代码部分复制到记事本,保存为60fps.reg,双击导入即可。

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations]
"DWMFRAMEINTERVAL"=dword:0000000f

修改完后重新连接远程桌面。

在线测试帧率:https://testufo.com

我在Windows10中修改注册表后,发现帧率并没有提升。刚开始以为是显卡驱动问题,后在知乎上看见有人遇到同样问题,发现和版本有关,企业版有效。

我用Windows10远程Windows11机器,发现帧率能达到60Hz,都是核显且驱动版本一至。

如果和我一样,修改注册表后无法达到60Hz,只有用其他方法。本文后面会有介绍。

开启显卡加速以及 H264 编码

启动组策略编辑器 (在“搜索”框中键入 gpedit.msc)

依次找到 计算机配置 -> 管理模板 -> Windows 组件 -> 远程桌面服务 -> 远程桌面会话主机 -> 远程会话环境 。

将硬件图形适配器应用于所有远程桌面服务会话配置远程桌面连接的 H.264/AVC 硬件编码设为启用。

网上有些优化把为远程桌面连接设置 H.264/AVC 444 图形模式的优先级设为启用。经过测试,启用后远程会话的CPU占有率降低,GPU占有率升高,帧率降低有一定波动。

有可能是因为我没有独立显卡。在启用该设置时需要测试效果,否则远程体验反而下降。

关于远程桌面会话默认模式和H.264/AVC 444模式对宽带的要求,在微软Azure虚拟桌面文档中有参考。

下表可指导你估算不同图形场景使用的数据带宽。 这些数字适用于采用 1920×1080 分辨率并同时采用默认图形模式和 H.264/AVC 444 图形模式的单一监视器配置。

方案默认模式H.264/AVC 444 模式缩略图场景说明
闲置0.3 Kbps0.3 Kbps用户已暂停工作,未发生活跃的屏幕更新
Microsoft Word100-150 Kbps200-300 Kbps用户正在活跃使用 Microsoft Word、打字、粘贴图形,并在文档之间切换
Microsoft Excel150-200 Kbps400-500 Kbps用户正在活跃使用 Microsoft Excel,并同时更新多个包含公式和图表的单元格
Microsoft PowerPoint4-4.5 Mbps1.6-1.8 Mbps用户正在活跃使用 Microsoft PowerPoint、打字、粘贴。 另外,用户正在修改内容丰富的图形,并使用幻灯片过渡效果
Web 浏览6-6.5 Mbps0.9-1 Mbps用户正在活跃浏览一个图形内容丰富的网站,其中包含多个静态图像和动画图像。 用户横向和纵向滚动页面
图库3.3-3.6 Mbps0.7-0.8 Mbps用户正在活跃使用图库应用程序。 浏览、缩放、调整大小和旋转图像
视频播放8.5-9.5 Mbps2.5-2.8 Mbps用户正在观看一段占用了半个屏幕的 30 FPS 视频
全屏视频播放7.5-8.5 Mbps2.5-3.1 Mbps用户正在观看一段已最大化为全屏的 30 FPS 视频

参考出自官方文档:docs.microsoft.com/zh-cn/azure/virtual-desktop/rdp-bandwidth

修改默认端口

该操作对远程体验效果没有影响。微软远程桌面基于RDP协议,使用3389端口。以前远程桌面就暴露过安全问题,3389也是黑客常扫描的一个端口。修改默认端口,可以提高安全性。

  1. 启动注册表编辑器 (在“搜索”框中键入 regedit);
  2. 导航到以下注册表子项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp ;
  3. 查找端口号 (PortNumber) ;
  4. 单击“编辑”>“修改” ,然后单击“十进制” ;
  5. 键入新端口号,然后单击 “确定”;
  6. 关闭注册表编辑器, 然后重新启动计算机;

远程桌面默认同时使用TCP和UDP协议,该设置是否会影响UDP协议,未验证。开启UDP协议体验上可以更快。

如果是暴露公网上,可以在路由器上配置其他端口转发(TCP+UDP),或者使用VPN或Zerotier One保证安全访问。

开启RemoteFX USB重定向

RDP默认支持共享存储设备,我们可以让它共享USB设备(该设置在控制端设置)。

找到计算机配置->管理模板->Windows组件->远程桌面服务->远程桌面会话客户端->RemoteFX USB 设备重定向设为启用

设置后重新连接远程即可。

第三方远程工具辅助

提升流畅度最主要是设置帧数,帧数越高对网络带宽要求越大。如果修改注册表无法突破30帧,可以用串流或第三方远程工具代替。

我用过的工具有Teamview,向日葵,ToDesk,RealVNC,NoMachine。

Teamviewt自从个人会被误检测商用后,很多人弃坑,就不说了。

向日葵最新版支持60FPS,120FPS,144FPS,但是免费版限在30FPS,用来办公足够,看视频玩游戏不行。收费也是按台授权,有点小贵。使用中发现向日葵最新版在即将发布的Ubuntu 22.04 Beta版中无法使用(不能被控制),一直在连接中。

ToDesk目前是我在用的,达到60FPS没问题,流畅度很好,免费用户能控制100台设置。

RealVNC测试也能达到60FPS,但是RealVNC不支持音频传送。

NoMachine基于NX协议,使用H264或VP8编码,速度能达到60FPS。但是在远程控制时,如果对远程机器屏幕缩放,会有黑屏BUG。

优缺点对比

微软远程桌面优缺点如下:

优点:

  1. 用Windows控制Windows体验非常好。全屏时可以完全隐藏远程工具栏(用快捷键唤出),在连接流畅时,和本地电脑一样。
  2. 支持远程APP,打开远程机器上某一个软件,就和使用本地APP一样。该功能只有服务器版本有,可以使用开源RemoteApp Tools创建远程APP。
  3. 真正的远程桌面,支持多账户(非服务器版需要破解,可参考我之前写的一篇(Windows 远程桌面多用户同时登录)。在控制过程中,远程电脑前的用户是看不到屏幕内容的。
  4. RDP协议,用户画面渲染是在客户端,所以即使远程电脑只支持2K,在被控电脑4K显示器下也能完美显示。(Linux下的XRDP未测试,但性能肯定不及Windows到Windows)
  5. 在其他电脑上无需安装客户端,直接使用,真正的云电脑。微软官方RD Client在手机上也非常好用。

缺点:

  1. 在外网使用Window远程桌面,需要有公网。
  2. RDP的3389端口有被攻击风险,虽然可以用VPN或RD网关之前技术保证安全,对普通用户还是比较复杂的。
  3. 功能上不如有些第三方远程工具强大。
  4. 不支持多屏显示器。

第三方远程工具基本都使用录制的方式,把远程桌面的屏幕录屏传送。相对于RDP优缺点如下:

优点:

  1. 兼容性好,能使用显卡加速,核显独显都可以,基本没区别。
  2. 在远程操作过程中,远程电脑前的人可以看到屏幕变化,适合教学。
  3. 跨平台,支持Linux,Mac,平板,手机。
  4. 支持多屏显示器(ToDesk/向日葵)。

缺点:

  1. 因为使用屏幕录制,如果被控机分辨率小于客户机,全屏时就只能拉伸。可以买显卡欺骗器(前提是接口也要支持,HDMI1.x接口最多只支持2K分辨率)
  2. 即使全屏,在上方还是会有远程操作按纽,还没发现哪个款可以隐藏。
  3. 需要注册第三方登录账号,使用上功能有限制。(RealVNC企业授权支持直连,NoMachine无需登录直连)
  4. 免费好用的不多,要么不好用,要么功能限制较多。目前来说推荐ToDesk。

最终我的方案是RDP和ToDesk一起使用。笔记本集成了摄像头,麦克风,音响等,功能全,方便携带。做为瘦客端远程到台式机,做编程,压制视频等其他需要高性能工作。即使换台电脑,接连上就可以用,不用再装软件,配环境。


已发布

分类

来自

标签:

评论

《“远程桌面优化避坑指南”》 有 8 条评论

  1. 匿名

    牛逼,文章非常好,非常有帮助

  2. wertywr

    博主可以试试parsec软件,现在我就是用的这个,串流方案

    1. 略有耳闻,可惜parsec不支持linux做被控端,有机会试试。还有moonlight

  3. 匿名

    感谢啊,正好在找教程,学废了!!!!大写的赞

  4. 匿名

    欧耶,沙发一下

  5. 匿名

    支持多屏幕显示的。

  6. deyu260

    realvnc server 6.11 client 7.8 支持音频传输了

  7. 匿名

    想咨询一下可以指定使用受控端或控制端进行图形渲染吗

回复 wertywr 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注