1

Я бегу туго. И на сервере, и на клиенте я использовал -depth 8 .

Несмотря на это, когда я начинаю сеанс, программа просмотра на клиенте печатает эту информацию, которая, кажется, указывает, что будут использоваться 32 бита. Есть ли объяснение этому, пожалуйста?

VNC server default format:
  8 bits per pixel.
  True colour: max red 7 green 7 blue 3, shift red 0 green 3 blue 6
Using default colormap with is TrueColor.  Pixel format:
  32 bits per pixel.
  Least significant byte first in each pixel.
  True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0

Я использую настольную версию Ubuntu 10.10 (Maverick) как на сервере, так и на клиенте. TightVNC - это версия 1.3.9 на обоих концах. Я полагаю, что более новая версия, 2.x, является Windows только на сегодняшний день, за исключением клиентской версии JVM. Я не использую версию JVM клиента, которая также 2.x, потому что я не знаю, совместима ли она с 1.3.9 на сервере.

Вызовы:

vncserver -depth 8 -geometry 800x600 :1
vncviewer -depth 8 -noshared -nocursorshape 255.255.255.255:1

2 ответа2

2

Также попробуйте это:

on vncserver use -depth 32
on vncviewer use -bgr233

При использовании bgr233 на сервере, как рекомендует Psycogeek, приложения, работающие на сервере, могут использовать дизеринг для улучшения своего внешнего вида. KDE, например, делает это. Модели сглаживания, особенно нерегулярные структуры, полученные методом "диффузии ошибок", плохо сжимаются и замедляют передачу.

Приведенный ниже тест с рабочим столом KDE показывает, что объем данных, передаваемых по сети, наименьший, если сервер работает в режиме truecolor (глубина 32; глубина 24 также может хорошо работать, но я не проверял это), и клиент запрашивает цвета bgr233 , Затем сервер "округляет" цвета до доступных в палитре bgr233, в результате чего получаются однородные области, которые хорошо сжимаются.

В зависимости от версии vnc, настроек и типа соединения, может также быть полезно запустить соединение vnc через сжатое соединение ssh:

ssh -C -L 5901:127.0.0.1:5901 user@remote

(подключение к localhost:1 вместо удаленного:1 с помощью vncviewer) и / или для настройки списка методов сжатия vnc с помощью "vncviewer -encodings".

Тестовое задание

Чтобы получить статистику о количестве переданных данных, я запускаю ssh -C с ключом -v. Это печатает статистику в конце соединения ssh (ctrl+d), которая показывает объем данных, отправленных vnc, и до какой степени ssh может сжать их.

На сервере vnc я запускаю KDE с разрешением 1440x800 со стандартным рабочим столом OpenSUSE 12.2. Рабочий стол OpenSUSE включает папку рабочего стола в углу с полупрозрачным фоном и эффектом градиентного освещения. Папка содержит несколько значков. Кроме того, есть панель запуска. Для каждого теста я запускаю ssh-соединение с -C -v, соединяюсь с vncviewer, закрываю соединение после полной передачи рабочего стола и ctrl+d ssh-соединение, чтобы прочитать статистику. Чтобы использовать стандартные настройки vnc, несмотря на подключение к localhost, я использую vncviewer с параметром -encodings "copyrect тесный hextile zlib correrere raw". Во втором тесте я опускаю "жесткий". Наконец, я также тестирую с настройками localhost по умолчанию. Я повторяю все тесты со сплошным фоновым цветом рабочего стола, но не с чисто белым или другим цветом, доступным в палитре bgr233.

Результаты

(1) Фоновая картинка "Вечер" Кристофа Куммера (поставляется с OpenSuSE 12.2):

с "жесткой" кодировкой:

32 bit server + bgr233 client: raw data   231,129, compressed   231,195
16 bit server + bgr233 client: raw data   235,528, compressed   235,548
bgr233 server + bgr233 client: raw data   379,472, compressed   379,524
16 bit server + 16 bit client: crashes xvnc server
32 bit server + 32 bit client: crashes xvnc server

без "жесткой" кодировки:

32 bit server + bgr233 client: raw data   514,614, compressed   336,993
16 bit server + bgr233 client: raw data   526,267, compressed   343,430
bgr233 server + bgr233 client: raw data 1,122,449, compressed   440,477
16 bit server + 16 bit client: raw data 3,422,711, compressed 1,486,065
32 bit server + 32 bit client: raw data 4,620,578, compressed 2,806,274

с настройками "localhost":

32 bit server + bgr233 client: raw data 1,153,388, compressed   231,740
16 bit server + bgr233 client: raw data 1,153,397, compressed   236,428
bgr233 server + bgr233 client: raw data 1,153,695, compressed   380,015
16 bit server + 16 bit client: raw data 4,612,015, compressed 1,166,199
32 bit server + 32 bit client: raw data 4,611,296, compressed 2,805,144

(2) Сплошной цвет фона:

с "жесткой" кодировкой:

32 bit server + bgr233 client: raw data    10,151, compressed     9,862
16 bit server + bgr233 client: raw data    14,994, compressed    14,817
bgr233 server + bgr233 client: raw data    76,335, compressed    76,268
16 bit server + 16 bit client: crashes xvnc server
32 bit server + 32 bit client: crashes xvnc server

без "жесткой" кодировки:

32 bit server + bgr233 client: raw data    28,285, compressed    15,885
16 bit server + bgr233 client: raw data    40,597, compressed    25,410
bgr233 server + bgr233 client: raw data   460,902, compressed    93,067
16 bit server + 16 bit client: raw data   161,323, compressed    73,196
32 bit server + 32 bit client: raw data   152,342, compressed    78,657

с настройками "localhost":

32 bit server + bgr233 client: raw data 1,155,743, compressed    14,926
16 bit server + bgr233 client: raw data 1,153,388, compressed    19,015
bgr233 server + bgr233 client: raw data 1,153,379, compressed    77,238
16 bit server + 16 bit client: raw data 4,611,296, compressed    62,929
32 bit server + 32 bit client: raw data 4,611,296, compressed    74,081

обсуждение

Обратите внимание, что 1440 x 800 = 1 152 000, а в 4 раза это 4 608 000. В режиме "localhost" vnc, похоже, отправляет несжатые данные. Выбор фона рабочего стола и глубины цвета сервера не имеет значения. Кроме того, VNC использует 32 бит на пиксель для передачи даже в 16-битном режиме. Тем не менее, существуют различия в том, насколько хорошо ssh может сжимать поток данных.

Во всех протестированных случаях bgr233 на клиенте получает наименьший объем данных, если сервер работает с 32-битными цветами, за которыми следуют 16-битные цвета и намного больший объем данных, если также использовать bgr233 на сервере. Эффект наиболее выражен на сплошном фоне.

На фоне картинки "жесткое" кодирование и сжатие localhost + ssh дают аналогичные результаты для клиента bgr233. Это говорит о том, что в этих настройках "сжатый" использует сжатие zlib (которое аналогично использованию сжатия ssh).

В 16 и 32-битных настройках клиента, к сожалению, происходит сбой сервера при использовании "тесного". Это были бы настройки, в которых было бы полезно сжатие JPEG, поддерживаемое "тесным", особенно с фоновой фотографией.

Предостережение: результаты показывают, что ssh-сжатие с настройками по умолчанию localhost работает хорошо. Однако тест не включает типичное использование на рабочем столе, такое как прокрутка длинной страницы в веб-браузере, для которого может быть важна кодировка "copyrect".

Кроме того, сжатие ssh может добавить заметную задержку в быстром соединении, что приводит к тому, что соединение кажется медленным, несмотря на отличное сжатие.

-JJ

1

Ответ благодаря Psycogeek:

on vncserver use -pixelformat bgr233
on vncviewer use -bgr233

После добавления этих параметров зритель утверждает, что использует 8-битные пиксели. Я не собираюсь спрашивать, почему -depth 8 недостаточно, потому что это свободное программное обеспечение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .