最近发现在局域网中用Windows远程桌面看视频画面有肉眼可见的延迟,测试帧率发现只有33帧,于是在网上找优化方法。网上的优化方案就几种,但都基本只讲如何设置,没说明原因。经过测试发现,有些设置不仅没有效果,还会产生“负优化”。所以还是有必要分享一下。
我运行的环境是Windows 10 21H2 专业版和Windows 11 21H1专业版,此次测试并非全面测试,只记录在自己在使用中的效果。不同的系统版本有可能结果不一样。
提升帧率
正常情况下,帧率达到60Hz,体验才会和本地一至。我们平时用的显示器最少也是60Hz,电竞的达到120Hz甚至144Hz。
Windows远程桌面是支持60帧的,需要修改注册表。
上图出自官方文档: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 Kbps | 0.3 Kbps | 用户已暂停工作,未发生活跃的屏幕更新 | |
Microsoft Word | 100-150 Kbps | 200-300 Kbps | 用户正在活跃使用 Microsoft Word、打字、粘贴图形,并在文档之间切换 | |
Microsoft Excel | 150-200 Kbps | 400-500 Kbps | 用户正在活跃使用 Microsoft Excel,并同时更新多个包含公式和图表的单元格 | |
Microsoft PowerPoint | 4-4.5 Mbps | 1.6-1.8 Mbps | 用户正在活跃使用 Microsoft PowerPoint、打字、粘贴。 另外,用户正在修改内容丰富的图形,并使用幻灯片过渡效果 | |
Web 浏览 | 6-6.5 Mbps | 0.9-1 Mbps | 用户正在活跃浏览一个图形内容丰富的网站,其中包含多个静态图像和动画图像。 用户横向和纵向滚动页面 | |
图库 | 3.3-3.6 Mbps | 0.7-0.8 Mbps | 用户正在活跃使用图库应用程序。 浏览、缩放、调整大小和旋转图像 | |
视频播放 | 8.5-9.5 Mbps | 2.5-2.8 Mbps | 用户正在观看一段占用了半个屏幕的 30 FPS 视频 | |
全屏视频播放 | 7.5-8.5 Mbps | 2.5-3.1 Mbps | 用户正在观看一段已最大化为全屏的 30 FPS 视频 |
参考出自官方文档:docs.microsoft.com/zh-cn/azure/virtual-desktop/rdp-bandwidth
修改默认端口
该操作对远程体验效果没有影响。微软远程桌面基于RDP协议,使用3389端口。以前远程桌面就暴露过安全问题,3389也是黑客常扫描的一个端口。修改默认端口,可以提高安全性。
- 启动注册表编辑器 (在“搜索”框中键入 regedit);
- 导航到以下注册表子项:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
; - 查找端口号 (PortNumber) ;
- 单击“编辑”>“修改” ,然后单击“十进制” ;
- 键入新端口号,然后单击 “确定”;
- 关闭注册表编辑器, 然后重新启动计算机;
远程桌面默认同时使用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。
优缺点对比
微软远程桌面优缺点如下:
优点:
- 用Windows控制Windows体验非常好。全屏时可以完全隐藏远程工具栏(用快捷键唤出),在连接流畅时,和本地电脑一样。
- 支持远程APP,打开远程机器上某一个软件,就和使用本地APP一样。该功能只有服务器版本有,可以使用开源RemoteApp Tools创建远程APP。
- 真正的远程桌面,支持多账户(非服务器版需要破解,可参考我之前写的一篇(Windows 远程桌面多用户同时登录)。在控制过程中,远程电脑前的用户是看不到屏幕内容的。
- RDP协议,用户画面渲染是在客户端,所以即使远程电脑只支持2K,在被控电脑4K显示器下也能完美显示。(Linux下的XRDP未测试,但性能肯定不及Windows到Windows)
- 在其他电脑上无需安装客户端,直接使用,真正的云电脑。微软官方RD Client在手机上也非常好用。
缺点:
- 在外网使用Window远程桌面,需要有公网。
- RDP的3389端口有被攻击风险,虽然可以用VPN或RD网关之前技术保证安全,对普通用户还是比较复杂的。
- 功能上不如有些第三方远程工具强大。
- 不支持多屏显示器。
第三方远程工具基本都使用录制的方式,把远程桌面的屏幕录屏传送。相对于RDP优缺点如下:
优点:
- 兼容性好,能使用显卡加速,核显独显都可以,基本没区别。
- 在远程操作过程中,远程电脑前的人可以看到屏幕变化,适合教学。
- 跨平台,支持Linux,Mac,平板,手机。
- 支持多屏显示器(ToDesk/向日葵)。
缺点:
- 因为使用屏幕录制,如果被控机分辨率小于客户机,全屏时就只能拉伸。可以买显卡欺骗器(前提是接口也要支持,HDMI1.x接口最多只支持2K分辨率)
- 即使全屏,在上方还是会有远程操作按纽,还没发现哪个款可以隐藏。
- 需要注册第三方登录账号,使用上功能有限制。(RealVNC企业授权支持直连,NoMachine无需登录直连)
- 免费好用的不多,要么不好用,要么功能限制较多。目前来说推荐ToDesk。
最终我的方案是RDP和ToDesk一起使用。笔记本集成了摄像头,麦克风,音响等,功能全,方便携带。做为瘦客端远程到台式机,做编程,压制视频等其他需要高性能工作。即使换台电脑,接连上就可以用,不用再装软件,配环境。
除非注明,否则均为”攻城狮-正“原创文章,请注明出处。
发表回复