web-dev-qa-db-ja.com

8ビットピクセル用のtightvncの設定

私はtightvncを実行しています。サーバーとクライアントの両方で、-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

サーバーとクライアントの両方でデスクトップバージョンのUbuntu10.10(Maverick)を使用しています。 TightVNCは両端がバージョン1.3.9です。新しいバージョンの2.xは、クライアントのJVMバージョンを除いて、現在のところWindowsのみであると思います。サーバー上の1.3.9と互換性があるかどうかわからないため、2.xでもあるクライアントJVMバージョンを使用していません。

呼び出しは次のとおりです。

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

Psycogeekのおかげで答えは次のとおりです。

on vncserver use -pixelformat bgr233
on vncviewer use -bgr233

これらのオプションが追加されると、ビューアは8ビットピクセルを使用していると主張します。 -depth 8はフリーソフトウェアであるため、なぜ十分ではないのか、わざわざ質問するつもりはありません。

1
H2ONaCl

また、これを試してください:

on vncserver use -depth 32
on vncviewer use -bgr233

Psycogeekによって提案されているようにサーバーでbgr233を使用している場合、サーバーで実行されているアプリケーションはディザリングを使用して外観を改善することがあります。たとえば、KDEはこれを行います。ディザリングパターン、特に「誤差拡散」法によって生成された不規則なパターンは、十分に圧縮されず、伝送が遅くなります。

以下のKDEデスクトップでのテストは、サーバーがトゥルーカラーモードで実行されている場合、ネットワークを介して転送されるデータの量が最小であることを示しています(深度32、深度24も正常に機能する可能性がありますが、これはテストしませんでした)およびクライアントはbgr233色を要求します。次に、サーバーは色をbgr233パレットで使用可能な色に「丸め」、その結果、均一な領域が適切に圧縮されます。

Vncのバージョン、設定、および接続タイプによっては、圧縮されたssh接続を介してvnc接続を実行することも有利な場合があります。

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

(vncviewerを使用してremote:1ではなくlocalhost:1に接続する)および/または「vncviewer-encodings」を使用してvnc圧縮方法のリストを調整する。

テスト

転送されたデータ量の統計を取得するには、-vを指定してssh-Cを実行します。これにより、ssh接続の最後(ctrl + d)に統計が出力され、vncによって送信されたデータの量と、sshがそれを圧縮できる量が示されます。

Vncサーバーで、OpenSUSE12.2の標準デスクトップを使用して1440x800でKDEを実行します。 OpenSUSEデスクトップの隅には、半透明の背景とグラデーションライト効果のあるデスクトップフォルダがあります。フォルダにはいくつかのアイコンが含まれています。さらに、起動パネルがあります。テストごとに、-C -vでssh接続を開始し、vncviewerで接続し、デスクトップが完全に送信されたら接続を閉じ、ssh接続をCtrl + Dキーを押して統計を読み取ります。ローカルホストに接続しているにもかかわらず標準のvnc設定を使用するには、-encodings「copyrecttight hextile zlib correrreraw」を指定したvncviewerを使用します。 2回目のテストでは、「タイト」を省略します。最後に、デフォルトのローカルホスト設定でもテストします。私はすべてのテストを無地のデスクトップの背景色で繰り返しますが、bgr233パレットで利用できる純粋な白や他の色ではありません。

結果

(1)Christoph Kummerによる背景画像「Evening」(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は、16ビットモードでも送信に32ビット/ピクセルを使用しているようです。それにもかかわらず、sshがデータストリームをどれだけうまく圧縮できるかには違いがあります。

テストされたすべてのケースで、サーバーが32ビットカラーで実行されている場合、クライアント上のbgr233は最小量のデータを受信し、サーバー上でもbgr233を使用している場合は、16ビットカラーとはるかに大量のデータがそれに続きます。効果は、無地の背景で最も顕著になります。

画像の背景では、「タイトな」エンコーディングとlocalhost + ssh圧縮により、bgr233クライアントで同様の結果が得られます。これは、「タイト」がこれらの設定でzlib圧縮(sshが使用する圧縮と同様)を使用していることを示しています。

16ビットおよび32ビットのクライアント設定では、「タイト」を使用すると、残念ながらサーバーがクラッシュします。これらは、特に背景写真で、「タイト」でサポートされているjpeg圧縮が役立つ設定になります。

警告:結果は、ローカルホストのデフォルト設定でのssh圧縮がうまく機能することを示唆しています。ただし、このテストには、「copyrect」エンコーディングが重要になる可能性のあるWebブラウザで長いページをスクロールするなどの一般的なデスクトップの使用は含まれていません。

さらに、ssh圧縮により、高速接続で顕著な遅延が発生する可能性があり、その結果、優れた圧縮にもかかわらず接続が遅く感じられます。

-JJ

2
Joachim Wagner