Warum ist VNC unter Windows so langsam?

27

In einem Test konnte ich einen Full-HD-Film problemlos vom Computer meines Freundes über unser Netzwerk streamen. Es ist so schnell, wie ich will.

Aber VNC ist schmerzlich langsam. Wir haben Real VNC und Tight VNC ausprobiert, ich habe mit den Capture MethodEinstellungen herumgespielt, aber nichts scheint einen Unterschied zu machen. es ist nur so langsam.

Hat jemand Tipps zur Verwendung von VNC, zur Verbesserung der Geschwindigkeit oder vielleicht Alternativen?

Ist es die Natur, nicht in der Lage zu sein, ungültige Teile des Bildschirms schnell genug zu bemerken, oder gibt es eine Netzwerksache, die es vielleicht verlangsamt?

Wir verwenden beide Windows 7.

Wir müssen in der Lage sein, die PCs des anderen zu sehen und zu steuern, ohne den Host zu sperren, damit RDP nicht funktioniert (sofern jemand etwas anderes weiß).

Josh Comley
quelle

Antworten:

26

VNC ist einfach ineffizient. VNC erstellt eine Reihe von Screenshots, komprimiert sie und verschiebt sie im Netzwerk

Unter Windows bietet RDP eine bessere Leistung, aber ich glaube, Sie benötigen eine professionelle oder bessere Leistung auf der Server- / Quellseite, um RDP ordnungsgemäß ausführen zu können.

wierdly Remote - Unterstützung kann besser arbeiten mit RDP Ihrer Bedürfnisse -seine sowohl für den Benutzer am Terminal und der Benutzer auf dem Remote - System den gleichen Bildschirm zu sehen

BEARBEITEN: 4 Jahre später benutze ich nomachine für ähnliche Aufgaben - würde für alle Betriebssysteme funktionieren und ein paar andere nützliche Dinge tun .

Geselle Geek
quelle
2
Ja, funktioniert nicht mit Nicht-Pro-Versionen, obwohl es vermutlich eine Problemumgehung gibt . (Und +1 natürlich, VNC saugt)
Slhck
Ah, ich hätte genau festlegen sollen, was ich gerade in meinem Schnitt gemacht habe !
Josh Comley
gleichzeitige Sitzungen können mit einigen [hackery] (geschehen missingremote.com/guide/... VNC Stil stuff ... Remote - Unterstützung vielleicht Edited meine Antwort Remote - Unterstützung enthalten?..
Journeyman Geek
josh Ihre Bearbeitung macht Sinn, aber beachten Sie die letzte Zeile von @journeyman Post, in der er sagt, dass "Remoteunterstützung" möglicherweise besser funktioniert. Haben Sie sich Remoteunterstützung angesehen? Ich benutze es gelegentlich und es funktioniert großartig.
Jay R. Wren
Bearbeitet, um zu reflektieren, dass Remoteunterstützung wirklich das ist, was Sie brauchen;)
Geselle Geek
15

VNC ist nicht vergleichbar mit Video-Streaming. Beim Video-Streaming übertragen Sie normalerweise einen vorkomprimierten Video-Stream über das Netzwerk. Für HD-Streams ist es oft H.264-codiert. Wenn Sie VNC verwenden, muss Ihr Host-Computer Bildschirm-Snapshots erstellen und komprimieren, bevor Sie diese an das Netzwerk senden. Hier gibt es mehrere Einschränkungen:

  • Starke Komprimierung erfordert viel CPU-Leistung. Beispielsweise dauert das Codieren eines 90-minütigen Films in H.264 in hoher Qualität auf meinem Athlon X2 4450e-Server oft mehr als 4 Stunden Komprimierungszeit. Normalerweise ist eine so starke Komprimierung für Echtzeitanwendungen wie die Fernbedienung ungeeignet.
  • Eine geringere Komprimierung erfordert wiederum mehr Netzwerkbandbreite, was bei Verbindungen mit geringer Bandbreite wie dem Internet zu einem Problem werden kann.

Nun, es gibt ein paar "Tricks", die von Videocodecs sowie Dienstprogrammen zur Fernsteuerung und Bildschirmfreigabe angewendet werden. Zunächst versuchen sie, die Bildschirmänderungen zu erkennen und nur das (komprimierte) Bild der Änderungen zu übertragen. Dies spart normalerweise VIEL Bandbreite und Rechenleistung. Für die Übertragung von Videos im Vollbildmodus ist dies jedoch wenig hilfreich, da der gesamte Bildschirm zu oft neu übertragen werden muss. Wie oben beschrieben, können aktuelle Computer Ihren Bildschirminhalt wahrscheinlich nicht in Full-HD rel-time kodieren und an eine Fernsteuerungsanwendung streamen, da Ihr Host den Videoinhalt dekodieren und die Rohbilder vor dem Senden neu kodieren muss sie an das Netzwerk. Einige ältere Dual-Core-Computer sind beim Dekodieren von Full-HD-Videoinhalten sogar am Limit.

Um die Geschwindigkeit Ihrer VNC-Fernbedienung zu verbessern, haben Sie folgende Möglichkeiten:

  • Die meisten VNC-Server / -Clients unterstützen mehrere Komprimierungsalgorithmen. Einige von ihnen sind für eine geringe Bandbreite optimiert, andere für eine gute Bildqualität und andere für eine geringe Latenz. Dies berührt einen weiteren Aspekt der Fernbedienung. Da es sich bei dem Dienst um eine interaktive Latenz handelt (Sie möchten die Reaktion auf einen Mausklick erst nach 5 Minuten Codierung sehen).
  • Versuchen Sie, die Anzahl der Bildschirmänderungen auf Ihrem Hostcomputer zu verringern. Deaktivieren Sie beispielsweise Windows-Desktopeffekte, -Animationen usw. Dies spart Bandbreite, da nur geänderte Teile des Bildschirms über das Netzwerk übertragen werden.
  • Versuchen Sie, weitere visuelle Effekte wie Transparenz auf dem Host zu deaktivieren. Transparente Fenster, wie sie von Vista / Win7 verwendet werden, verringern die "Komprimierbarkeit" von Bildern. Unifarbene / "flache" Bereiche lassen sich wesentlich effizienter komprimieren als lebendige Farben und ausgefallene Details. Das Deaktivieren von Aero-Transparenz und Desktop-Effekten beschleunigt das Fernsteuerungserlebnis. Die meisten Remotesteuerungs-Tools ermöglichen es sogar, solche Effekte beim Verbinden automatisch zu deaktivieren (z. B. Microsoft RDP und einige VNC-Implementierungen).
  • Gleiches gilt für Hintergrundbilder. Versuchen Sie es mit einer einfarbigen Hintergrundeinstellung anstelle von HD-Bildern.

Ein weiteres Problem für VNC ist, dass es die Änderungen auf Ihrem Bildschirm erkennen muss. Einige VNC-Implementierungen machen "blöde" Screenshots und vergleichen sie mit dem vorherigen Screenshot, um Änderungen zu erkennen. Das kostet schon viel Kraft. Einige fortgeschrittenere Implementierungen arbeiten mit speziellen Anzeigetreibern (siehe UltraVNC), die effizienter sind, jedoch die Installation spezieller Treiber erfordern.

Natürlich hilft all dies nicht, wenn Sie ein Video auf Ihrem Host-Computer abspielen. In diesem Fall muss VNC ~ 30 Vollbildbilder pro Sekunde neu codieren und über das Netzwerk senden. Bei den meisten Komprimierungen, die von heutigen CPUs in Echtzeit durchgeführt werden können, würde ein solcher Stream> 8 Mbit / s Bandbreite benötigen. Daher ist es für die meisten Internetverbindungen ungeeignet (denken Sie insbesondere an asymmetrische DSL-Verbindungen mit einer Upload-Geschwindigkeit von weniger als 1 Mbit / s, und ja, es ist die Upload-Geschwindigkeit, die auf der Host-Seite von Bedeutung ist).

Es ist möglicherweise für die Verwendung im LAN geeignet, aber hier sollten Sie sich wahrscheinlich mehr Gedanken über die Einrichtung eines Medienservers oder die Freigabe Ihrer Medien mithilfe des DLNA / UPnP-Medienservers machen (dies kann sogar der Win7-Medienplayer tun). Verwenden Sie dann einen DLNA-Client, um die freigegebenen Medien abzuspielen.

SkyBeam
quelle
1
+1, nette Erklärung. Ich würde auch für die DLNA / Media Server-Version gehen.
Slhck
Netter Versuch aber total falsch, weder die CPU Auslastung noch die Netzwerkauslastung ist sowieso hoch. Sogar mit einfacher Differenzübertragung könnten 20fps über ein 1gib-Netzwerk erreicht werden.
Lothar
4

Die absolut schnellste VNC-Variante, die ich jemals verwendet habe, ist UltraVNC mit dem installierten Video Mirror-Treiber . RDP ist immer noch merklich schneller, aber bei weitem nicht so schlecht.

Ich habe auch wirklich gute Dinge über ZeroRemote gehört , es aber nie getestet. Es scheint, dass TrueRemote sein Nachfolger ist.

afrazier
quelle
Wird unter GNU / Linux nicht unterstützt.
Hi-Angel
1

Wenn Sie versuchen, Videos über ein LAN abzuspielen, ist Radmin wahrscheinlich die schnellste Lösung in Bezug auf die reine Bildschirmgeschwindigkeit .

Shinrai
quelle
3
Versuchte Radmin und, ja, es ist kommerziell, aber es ist es verdammt wert! Sehr schnell. Fantastisch.
Josh Comley
1

Wie @Journeyman Geek sagt, ist VNC ineffizient. Dies ist beabsichtigt, damit VNC nicht "verstehen" muss, was der Remote-Client anzuzeigen versucht.

Tatsächlich funktioniert RDP, sodass Verknüpfungen verwendet und Bilder schneller gerendert werden können. RDP teilt dem anderen Ende beispielsweise mit, dass der Client an dieser Stelle ein Fenster geöffnet hat, anstatt die Bitmap-Daten zu senden, die die Bildschirmänderung darstellen.

Es gibt "Terminalserver" -Hacks, die den Versionen von Windows, in denen sie nicht enthalten sind, RDP-Funktionen hinzufügen. Ich empfehle sie jedoch nicht offiziell, und Sie verwenden sie auf eigenes Risiko. Ich denke jedoch, dass sogar die "Starter" -Versionen von Windows 7 mit "Remote Assistance" (msra.exe) ausgestattet sind, die Sie möglicherweise verwenden.

Zur Verbesserung der VNC-Leistung können Sie jedoch die Anzeigetiefe auf 8 Bit, die Auflösung des Clientbildschirms und die clientseitige Bitmap-Zwischenspeicherung verringern. Das bedeutet, dass VNC weniger Daten über das Kabel versenden muss und Sie eine bessere Leistung erzielen (die jedoch nicht besonders gut aussieht).

LawrenceC
quelle
1

Sie können auch TeamViewer ausprobieren, es ist kostenlos für den nichtkommerziellen Gebrauch und für mich ziemlich schnell. Ich habe es aber nicht auf HD-Video getestet.

wizzard0
quelle
0

Wenn Sie nach Leistung suchen, müssen Sie VNC nicht verwenden, versuchen Sie etwas wie LogMeIn . Es ist kostenlos und funktioniert gut.

Jeff F.
quelle
Habe gerade LogMeIn ausprobiert, es hat mir überhaupt nicht gefallen!
Josh Comley
3
Ich liebe LogMeIn für die Fernbedienung, aber für Videos? Keine Chance. VNC ist mindestens P2P. Es geht direkt zwischen der Quelle und dem Ziel. LogMeIn stellt eine Verbindung über den Server her, was bedeutet, dass Sie eine viel höhere Latenz haben. Alle Probleme mit VNC und ein paar mehr. Es ist leistungsstark für das, wofür es entwickelt wurde, aber nicht für Echtzeit-Vollbildvideos.
music2myear
Ich versuche nicht, Video zu machen. Ich habe Video nur als Test verwendet, um sicherzustellen, dass die Verbindung zwischen den beiden Computern nicht langsam ist
Josh Comley,
0

Selbst über das Internet (mit Ping-Raten> 50 ms und einer anständigen Bandbreite von> 1 MBit / s) verhalte ich mich bei UltraVNC sehr gut. Die Magie kommt mit dem Ändern der Verbindungseinstellungen.

Gehen Sie nach dem Starten des Viewers zu "Verbindungsoptionen", deaktivieren Sie "Beste Einstellungen automatisch auswählen", aktivieren Sie "Enge" und verringern Sie das "JPEG", um die Qualität zu verringern, falls erforderlich (2-4 funktionieren gut).

Das ist der einzige Weg, wie ich Full Colors mit anständiger Leistung erzielen kann. Sie erhalten danach mehrere fps, genug, um eine schnelle Diashow für einen Vollbildfilm zu erstellen (genug für alles, was ich mache, einschließlich der Remote-Entwicklung, um echte Filme zu langsam anzusehen, und es ist auch kein Audio vorhanden).

Außerdem ist es in den Servereigenschaften hilfreich (wenn kein Spiegeltreiber verwendet wird, was die Leistung erheblich verbessert), "Vollbild abfragen", "Vordergrundfenster abfragen", "Fenster unter Cursor abfragen", "System-HookDll", " Geringe Genauigkeit "eingeschaltet. Grundsätzlich so ziemlich alles links.

Andreas Reiff
quelle