Почему VNC в Windows такой медленный?

28

В тесте я мог без проблем передавать потоковое видео в формате HD через нашу сеть с компьютера моего друга. Это так быстро, как я мог хотеть.

Но VNC мучительно медленен. Мы пробовали Real VNC и Tight VNC, я поиграл с Capture Methodнастройками, но, похоже, ничего не изменилось; это так медленно

У кого-нибудь есть какие-либо советы по использованию VNC, о том, как улучшить скорость, или, возможно, какие-либо альтернативы?

Это природа неспособности заметить недействительные участки экрана достаточно быстро, или, может быть, сетевая вещь замедляет его?

Мы оба используем Windows 7.

Нам нужно иметь возможность просматривать и контролировать компьютеры друг друга без блокировки хоста, поэтому RDP не будет работать (если кто-то не знает иначе).

Джош Комли
источник

Ответы:

27

VNC просто неэффективен. VNC работает в значительной степени, снимая серию скриншотов, сжимая их и передавая их по сети

В Windows RDP даст вам лучшую производительность, но вам нужен профессионал или лучше на стороне сервера / источника для правильного RDP, я считаю.

wierdly удаленной помощь может работать лучше для ваших потребностей -ITS ПРРА как с пользователем в терминале, и пользователем на удаленной системе , видя тот же экран

РЕДАКТИРОВАТЬ: 4 года, я использую nomachine для аналогичных задач - будет работать в разных ОС, и делает несколько других полезных вещей.

Подмастерье Компьютерщик
источник
2
Да, не работает на не Pro версиях, хотя я думаю , что есть обходной путь . (И +1 конечно, VNC отстой)
slhck
Ах, я должен был оговорить, что я сделал в моей редакции только сейчас!
Джош Комли
одновременные сеансы, могут быть выполнены с помощью некоторых [хакерских] ( missingremote.com/guide/… материал в стиле VNC ... возможно, удаленная помощь?. Отредактировал мой ответ, включив в него удаленную помощь.
Путник, выродок
Джош Ваше редактирование имеет смысл, но обратите внимание на последнюю строку поста @journeyman, где он говорит, что «удаленная помощь» может работать лучше. Вы смотрели на удаленную помощь? Я использую это время от времени, и это прекрасно работает.
Джей Р. Рен
Отредактировано, чтобы отразить, что удаленная помощь действительно то, что вам нужно использовать;)
Путешественник Geek
15

VNC не сравним с потоковым видео. При потоковой передаче видео вы обычно передаете предварительно сжатый видеопоток через сеть. Для потоков HD это часто кодируется H.264. Если вы используете VNC, то ваш хост-компьютер должен сделать снимки экрана и сжать их перед отправкой в ​​сеть. Здесь есть несколько ограничений:

  • Сильное сжатие требует много ресурсов процессора. Например, для кодирования 90-минутного фильма в формате H.264 в высоком качестве на моем сервере Athlon X2 4450e часто требуется более 4 часов сжатия. Обычно такое сильное сжатие не подходит для приложений реального времени, таких как удаленное управление.
  • Менее сильное сжатие, в свою очередь, потребует большей пропускной способности сети, что может стать проблемой для соединений с низкой пропускной способностью, таких как Интернет.

Ну, есть несколько «хитростей», которые применяются видеокодеками и утилитами удаленного управления и совместного использования экрана. Прежде всего, они пытаются обнаружить изменения на экране и передать только (сжатое) изображение изменений. Это обычно экономит много пропускной способности и вычислительной мощности. Однако для передачи видео в полноэкранном режиме это не очень помогает, поскольку весь экран приходится переносить слишком часто. Как написано выше, современные машины, вероятно, не смогут повторно кодировать содержимое экрана в формате Full-HD и передавать его в приложение удаленного управления, поскольку вашему хосту придется декодировать видеоконтент, а затем перекодировать необработанные изображения перед отправкой. их в сеть. Некоторые старые двухъядерные машины даже находятся на пределе при декодировании видеоконтента Full-HD.

Чтобы повысить скорость дистанционного управления VNC, вы можете сделать следующее:

  • Большинство VNC-серверов / клиентов поддерживают несколько алгоритмов сжатия. Некоторые из них оптимизированы для небольшой полосы пропускания, некоторые для хорошего качества изображения, а некоторые для низкой задержки. Это касается другого аспекта дистанционного управления. Поскольку сервис интерактивный, имеет значение время ожидания (вы не хотите видеть реакцию на щелчок мышью сразу после 5 минут кодирования).
  • Попробуйте уменьшить количество изменений экрана на вашем хост-компьютере. Например, попробуйте отключить эффекты рабочего стола Windows, анимацию и т. Д. Это экономит полосу пропускания, поскольку только измененные части экрана передаются по сети.
  • Попробуйте отключить дополнительные визуальные эффекты на хосте, такие как прозрачность. Прозрачные Windows, используемые в Vista / Win7, уменьшают «сжимаемость» изображений. Однотонные / «плоские» участки гораздо эффективнее сжимать, чем яркие цвета и причудливые детали. Таким образом, отключение прозрачности Aero и эффектов рабочего стола действительно ускоряет процесс удаленного управления. Большинство инструментов удаленного управления даже позволяют автоматически отключать такие эффекты при подключении (например, Microsoft RDP и некоторые реализации VNC).
  • То же относится и к фоновым картинкам. Попробуйте использовать настройку одноцветного фона вместо изображений HD.

Другая проблема для VNC заключается в том, что он должен обнаруживать изменения на вашем экране. Некоторые реализации VNC делают «тупые» снимки экрана и сравнивают их с предыдущим снимком экрана, чтобы обнаружить изменения. Это уже требует много энергии. Некоторые более продвинутые реализации работают со специальными драйверами дисплея (проверьте UltraVNC), которые более эффективны, но требуют установки специальных драйверов.

Конечно, все это не помогает, если вы воспроизводите видео на хост-компьютере. В этом случае VNC придется перекодировать ~ 30 полноэкранных изображений в секунду и отправлять его по сети. В большинстве сжатий, которые могут быть выполнены в режиме реального времени современными процессорами, такой поток занимал бы> 8 Мбит / с полосы пропускания. Так что это не подходит для большинства интернет-соединений (особенно подумайте об асимметричных DSL-соединениях с типичной скоростью передачи менее 1 Мбит / с, и да, это скорость загрузки, которая имеет значение на стороне хоста).

Это может быть подходящим для использования в локальной сети, но здесь вам, вероятно, стоит подумать о настройке медиа-сервера или обмениваться медиафайлами с помощью медиа-сервера DLNA / UPnP (даже медиаплеер Win7 может это сделать). Затем используйте DLNA-клиент для воспроизведения общего мультимедиа.

SkyBeam
источник
1
+1, хорошее объяснение. Я также хотел бы перейти на версию DLNA / Media Server.
slhck
Хорошая попытка, но совершенно неверная, ни загрузка процессора, ни использование сети в любом случае невелики. Даже с простой передачей разницы он может делать 20 кадров в секунду по сети 1 Гбит.
Лотар
4

Абсолютно самый быстрый вариант VNC, который я когда-либо использовал, - это UltraVNC с установленным драйвером видеозеркала. RDP все еще заметно быстрее, но это не так плохо.

Я также слышал действительно хорошие вещи о ZeroRemote , но никогда не проверял это. Похоже, что TrueRemote является его преемником.

afrazier
источник
Не поддерживается в GNU / Linux.
Привет, Ангел,
1

Если вы пытаетесь смотреть видео через локальную сеть, самое быстрое решение с точки зрения скорости рисования экрана - это, вероятно, Radmin .

Shinrai
источник
3
Попробовал Radmin и, да, это коммерческое, но оно того стоит! Очень быстро. Фантастика.
Джош Комли
1

Как говорит @Journeyman Geek, VNC неэффективен. Это сделано так, что VNC не должен «понимать», что пытается отобразить удаленный клиент.

RDP на самом деле делает, поэтому он может использовать ярлыки и рендерить изображения быстрее. RDP сообщает другому концу, например, «клиент открыл окно в этом месте» вместо отправки растровых данных, представляющих изменение экрана.

Существуют «хакерские серверы терминалов», которые добавят возможность RDP в версии Windows, в которых они отсутствуют, но я официально не рекомендую их, и вы используете их на свой страх и риск. Тем не менее, я думаю, что даже «начальные» версии Windows 7 поставляются с «Удаленным помощником» (msra.exe), который вы можете попробовать использовать.

Однако для повышения производительности VNC вы можете уменьшить глубину экрана до 8 бит, уменьшить разрешение экрана клиента и использовать кэширование растровых изображений на стороне клиента. Это означает, что VNC должен отправлять меньше данных по проводам, и вы получите лучшую производительность (но это не будет выглядеть красиво).

LawrenceC
источник
0

Если вы ищете производительность, вам не нужно использовать VNC, попробуйте что-то вроде LogMeIn . Это бесплатно и хорошо работает.

Джефф Ф.
источник
Только что попробовал LogMeIn, совсем не понравилось!
Джош Комли
3
Я люблю LogMeIn для дистанционного управления, но для видео? Нет шансов. VNC - это как минимум P2P. Он идет прямо между источником и местом назначения. LogMeIn вводит соединение через их сервер, что означает, что у вас намного более высокая задержка. Все проблемы с VNC плюс еще несколько. Он мощный для того, для чего он предназначен, но он не предназначен для полноэкранного видео в реальном времени.
music2myear
Я не пытаюсь делать видео, я только использовал видео в качестве теста, чтобы убедиться, что соединение между двумя компьютерами не было медленным
Джош Комли
0

Вы также можете попробовать TeamViewer, это бесплатно для некоммерческого использования и было довольно быстро для меня. Я не проверял это на HD видео, хотя.

wizzard0
источник
0

Для меня даже через Интернет (со скоростью пинга> 50 мс и приличной пропускной способностью> 1 Мбит / с) я получаю очень хорошее поведение на UltraVNC. Волшебство приходит с изменением настроек соединения.

После запуска программы просмотра перейдите в «Параметры подключения», отключите «Автоматический выбор лучших настроек», включите «Плотный» и, если необходимо, уменьшите «JPEG» для снижения качества (2-4 работает хорошо).

Это единственный известный мне способ получения полных цветов с достойной производительностью. После этого вы получите несколько кадров в секунду, что достаточно для быстрого показа слайдов в полноэкранном фильме (достаточно для всего, что я делаю, в том числе для удаленной разработки, для слишком медленного просмотра реального фильма, а также без звука).

Кроме того, в «Свойствах» сервера полезно иметь (если не используется зеркальный драйвер, который значительно повышает производительность) иметь «Опрос в полноэкранном режиме», «Окно опроса переднего плана», «Окно опроса под курсором», «Системный HookDll», « Низкая точность "включена. В основном, почти все слева.

Андреас Рейфф
источник