为什么 Windows 上的 VNC 这么慢?

Jos*_*ley 36 vnc windows-7 performance video-streaming

在测试中,我可以从我朋友的计算机通过我们的网络流式传输全高清电影,没问题。它是我想要的那样快。

但是 VNC 非常缓慢。我们已经尝试过 Real VNC 和 Tight VNC,我已经尝试过Capture Method设置,但似乎没有任何区别;它只是太慢了。

有没有人有关于使用 VNC、如何提高速度或任何替代方法的任何提示?

是因为无法足够快地注意到屏幕的无效部分,还是网络问题可能会减慢它的速度?

我们都使用 Windows 7。

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

Jou*_*eek 35

VNC 只是效率低下。VNC 的工作原理是截取一系列截图,压缩它们,然后将它们散布在网络上

在 Windows 上,RDP 将为您提供更好的性能,但我相信您需要在服务器/源端专业或更好的适当 RDP。

奇怪的远程协助可能会更好地满足您的需求 - 它与终端用户和远程系统用户看到相同屏幕的 RDP

编辑: 4 年过去了,我将nomachine用于类似的任务 - 可以跨操作系统工作,并做一些其他有用的事情。

  • 是的,不适用于非 Pro 版本,尽管有 [解决方法](http://www.intowindows.com/how-to-enable-remote-desktop-connection-in-windows-7-home-premium -版/)我想。(当然还有+1,VNC 很烂) (2认同)

Sky*_*eam 15

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

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

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

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

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

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

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

它可能适合局域网使用,但在这里您可能更应该考虑设置媒体服务器或使用 DLNA/UPnP 媒体服务器共享您的媒体(即使是 Win7 媒体播放器也可以这样做)。然后使用 DLNA 客户端播放共享媒体。