为什么Windows上的VNC这么慢?


23

在测试中,我可以通过我朋友的电脑在我们的网络上播放一部完整的高清电影,没问题。 它的速度和我想要的一样快。

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

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

是不是能够足够快地注意到屏幕无效部分的性质,或者是否有网络事情可能会减慢它的速度?

我们都在使用Windows 7。

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

Answers:


20

VNC效率很低。 VNC可以通过拍摄一系列屏幕截图,压缩它们以及在网络上投放它们来实现相当的功能

在Windows上,RDP会为您提供更好的性能,但是您需要专业或更好的服务器/源端才能获得正确的RDP。

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

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


2
是的,虽然有,但不适用于非专业版 解决方法 我想。 (当然还有+1,VNC很糟糕)
slhck

啊,我应该规定我在我的所做的事情 编辑 现在!
Josh Comley

并发会话,可以用一些[hackery]( missingremote.com/guide/... VNC风格的东西......可能是远程协助? 。编辑我的答案,包括远程协助。
Journeyman Geek

josh你的编辑是有道理的,但请注意@journeyman帖子的最后一行,他说“远程协助”可能会更好。你看过远程协助吗?我偶尔使用它,效果很好。
Jay R. Wren

编辑反映远程协助确实是您需要使用的;)
Journeyman Geek

15

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

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

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

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

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

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

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

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


1
+1,很好的解释。我也会选择DLNA / Media Server版本。
slhck

不错的尝试,但完全错误,CPU负载和网络使用率都不高。即使使用简单的差异传输,它也可以在1gib网络上执行20fps。
Lothar


1

如果您正在尝试通过LAN观看视频,那么就可以实现最快的屏幕绘制速度解决方案 Radmin的


3
尝试Radmin,是的,它是商业的,但它是值得的!非常快。太棒了。
Josh Comley

1

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

RDP实际上是这样做的,因此它可以更快地获取快捷方式和渲染图像。 RDP告诉另一端,例如,“客户端在此位置打开了一个窗口”,而不是发送表示屏幕更改的位图数据。

有“终端服务器”黑客可以将RDP功能添加到没有它们的Windows版本中,但是我没有正式推荐它们,你使用它们需要您自担风险。但是,我认为即使Windows 7的“Starter”版本也带有“远程协助”(msra.exe),您可以尝试使用它。

但是,您可以采取哪些措施来提高VNC性能,包括将显示深度降低到8位,降低客户端屏幕的分辨率,以及使用客户端位图缓存。这意味着VNC必须在线路上发送更少的数据,您将体验到更好的性能(但它看起来不太漂亮)。


1

您也可以尝试使用TeamViewer,它可以免费用于非商业用途,对我来说速度相当快。我没有在高清视频上测试它。


0

如果您正在寻找性能,您不需要使用VNC,尝试类似的东西 LogMeIn的 。它是免费的,效果很好。


刚试过LogMeIn,根本不喜欢它!
Josh Comley

3
我喜欢LogMeIn进行远程控制,但对于视频?不是机会。 VNC至少是P2P。它直接在源和目标之间。 LogMeIn通过其服务器引入连接,这意味着您有更高的延迟。 VNC的所有问题加上一些问题。它的设计功能非常强大,但它并非专为实时全屏视频而设计。
music2myear

我不是想做视频,我只是用视频作为测试来确保两台计算机之间的连接速度不慢
Josh Comley

0

对我来说,即使通过互联网(ping速率> 50ms,体面的带宽> 1mbit / s),我在UltraVNC上的表现也非常好。改变连接设置的神奇之处在于。

启动查看器后,转到“连接选项”,禁用“自动选择最佳设置”,启用“紧密”并降低“Jpeg”以降低质量(如果需要)(2-4可以正常工作)。

这是我所知道的唯一一种具有良好性能的全彩色。 之后您将获得几个fps,足以在全屏幕电影上播放快速幻灯片(足够我正在做的一切,包括远程开发,真实电影观看太慢而且没有音频)。

此外,在服务器“属性”中,它有助于(如果不使用极大地帮助性能的镜像驱动程序)具有“轮询全屏”,“轮询前景窗口”,“光标下的轮询窗口”,“系统钩子”,“低精度“开启了。基本上,几乎左边的一切。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.