Настройка сжатого времени для 8-битных пикселей
Я бегу туго. На сервере и клиенте я использовал -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 ответа
Ответ благодаря Psycogeek:
on vncserver use -pixelformat bgr233
on vncviewer use -bgr233
После добавления этих параметров зритель утверждает, что использует 8-битные пиксели. Я не собираюсь спрашивать, почему -depth 8 недостаточно, потому что это свободное программное обеспечение.
Также попробуйте это:
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 corre rere 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