为什么 Windows 上的 VNC 这么慢?

为什么 Windows 上的 VNC 这么慢?

在测试中,我可以从朋友的电脑上通过我们的网络传输一部全高清电影,没有任何问题。速度满足了我的要求。

但是 VNC 实在是太慢了。我们试过 Real VNC 和 Tight VNC,我也尝试过各种Capture Method设置,但似乎没有什么效果;它就是太慢了。

有人对使用 VNC 有什么建议吗?如何提高速度,或者有什么替代方法吗?

它是否是由于无法足够快地注意到屏幕上无效的部分,或者是否存在网络问题导致其速度变慢?

我们都在使用Windows 7。

我们需要能够查看和控制彼此的电脑没有锁定主机,因此 RDP 将无法工作(除非有人知道其他情况)。

答案1

VNC 效率很低。VNC 的工作原理基本上是截取一系列屏幕截图,然后压缩它们,并通过网络发送它们

在 Windows 上,RDP 将为您提供更好的性能,但我相信您需要在服务器/源端使用专业版或更好的版本才能获得正确的 RDP。

奇怪地远程协助可能更适合你的需求 - 它的 RDP 可以让终端用户和远程系统用户看到同一个屏幕

编辑:四年过去了,我正在使用无机器对于类似的任务 - 可以跨操作系统工作,并做一些其他有用的事情。

答案2

VNC 无法与视频流相提并论。在视频流中,您通常通过网络传输预压缩的视频流。对于高清流,它通常采用 H.264 编码。如果您使用 VNC,则主机必须拍摄屏幕快照并压缩它们,然后才能将它们发送到网络。这里有几个限制:

  • 强压缩需要大量的 CPU 能力。例如,在我的 Athlon X2 4450e 服务器上,用 H.264 高质量编码一部 90 分钟的电影通常需要 4 小时以上的压缩时间。通常,这种强压缩不适合远程控制等实时应用。
  • 反过来,压缩强度较低会需要更多的网络带宽,这可能会成为互联网等低带宽连接的问题。

嗯,视频编解码器和远程控制及屏幕共享实用程序使用了一些“技巧”。首先,它们会尝试检测屏幕变化并仅传输变化的(压缩)图像。这通常可以节省大量带宽和处理能力。但是对于全屏视频传输,它并没有太大帮助,因为整个屏幕必须经常重新传输。如上所述,当前的机器可能无法实时编码您的全高清屏幕内容并将其流式传输到远程控制应用程序,因为您的主机必须解码视频内容,然后重新编码原始图像,然后才能将它们发送到网络。一些较旧的双核机器在解码全高清视频内容时甚至达到极限。更不用说在将屏幕上的全高清图像发送到 VNC 客户端之前必须重新编码它们了。

为了提高您的 VNC 远程控制速度,您可以执行以下操作:

  • 大多数 VNC 服务器/客户端都支持多种压缩算法。其中一些针对小带宽进行了优化,一些针对良好的图像质量进行了优化,一些针对低延迟进行了优化。这涉及到远程控制的另一个方面。由于服务是交互式的,因此延迟很重要(您不希望在编码 5 分钟后看到鼠标单击的反应)。
  • 尝试减少主机上的屏幕变化量。例如,尝试禁用 Windows 桌面效果、动画等。这可以节省带宽,因为只有屏幕的更改部分会通过网络传输。
  • 尝试禁用主机上的更多视觉效果,如透明度。Vista/Win7 使用的透明窗口会降低图像的“可压缩性”。单色/“平面”区域的压缩效率比鲜艳的颜色和花哨的细节高得多。因此,禁用 Aero 透明度和桌面效果确实可以加快远程控制体验。大多数远程控制工具甚至允许在连接时自动禁用此类效果(例如 Microsoft RDP 和一些 VNC 实现)。
  • 同样适用于背景图片。尝试使用单色背景设置,而不是高清图片。

VNC 的另一个问题是它必须检测屏幕上的变化。一些 VNC 实现会进行“愚蠢”的截图,并将它们与之前的截图进行比较以检测变化。这已经消耗了很多电量。一些更高级的实现与特殊的显示驱动程序(检查 UltraVNC)配合使用,这些驱动程序在这里效率更高,但需要安装特殊的驱动程序。

当然,如果您在主机上播放视频,所有这些都无济于事。在这种情况下,VNC 必须每秒重新编码约 30 张全屏图像并通过网络发送。在当今 CPU 可以实时执行的大多数压缩中,这样的流将占用 > 8Mbps 的带宽。因此它不适合大多数互联网连接(尤其是考虑非对称 DSL 连接,其上传速度通常低于 1Mbps,是的,上传速度对主机端很重要)。

它可能适合在 LAN 上使用,但在这里您可能应该更多地考虑设置媒体服务器或使用 DLNA/UPnP 媒体服务器共享媒体(即使 Win7 媒体播放器也可以做到这一点)。然后使用 DLNA 客户端播放共享媒体。

答案3

我用过的最快的 VNC 版本是超VNC视频镜像驱动程序已安装。RDP 仍然明显更快,但并没有那么糟糕。

我也听到过关于零远程,但从未测试过。看来TrueRemote是它的继任者。

答案4

正如 @Journeyman Geek 所说,VNC 效率低下。这是设计使然,这样 VNC 就不必“理解”远程客户端试图显示的内容。

RDP 实际上确实如此,因此它可以走捷径并更快地渲染图像。例如,RDP 会告诉另一端“客户端在此位置打开了一个窗口”,而不是发送表示屏幕变化的位图数据。

有一些“终端服务器”黑客程序可以为没有 RDP 功能的 Windows 版本添加此功能,但我并不正式推荐它们,使用这些程序需要您自担风险。不过,我认为即使是 Windows 7 的“入门”版本也附带了“远程协助”(msra.exe),您可以尝试使用它。

不过,您可以采取一些措施来提高 VNC 性能,包括将显示深度降低到 8 位、降低客户端屏幕的分辨率以及使用客户端位图缓存。这意味着 VNC 需要通过网络传输更少的数据,您将体验到更好的性能(但看起来不太美观)。

相关内容