web-dev-qa-db-ja.com

WindowsのVNCが非常に遅いのはなぜですか?

テストでは、友人のコンピューターからネットワーク経由でフルHDムービーをストリーミングできました。問題ありません。それは私が望めるのと同じくらい速いです。

しかし、VNCは非常に遅いです。私たちはReal VNCとTight VNCを試しましたが、私はCapture Method設定ですが、違いはないようです。それはとても遅いです。

誰かがVNCの使用に関するヒント、速度を改善する方法、またはおそらく他の選択肢を持っていますか?

画面の無効化された部分に十分迅速に気付かないという性質ですか、それともおそらくネットワークの速度が低下しているのでしょうか?

どちらもWindows 7を使用しています。

お互いのPCを表示および制御できる必要がありますなしホストをロックアウトするため、RDPは機能しません(他の人が知らない限り)。

31
Josh Comley

VNCはまったく非効率的です。 VNCは、一連のスクリーンショットを撮り、それらを圧縮し、ネットワーク全体に流し込むことにより、かなり機能します。

Windowsの場合、RDPを使用するとパフォーマンスが向上しますが、適切なRDPを実現するには、サーバー/ソース側でプロ以上の能力が必要です。

奇妙なことに リモートアシスタンス は、ニーズに合わせて機能する可能性があります。RDPは、ターミナルのユーザーとリモートシステムのユーザーの両方に同じ画面が表示されます。

編集:4年後、私は同様のタスクに nomachine を使用しています-OS間で機能し、他のいくつかの便利なことを行います。

31
Journeyman Geek

VNCはビデオストリーミングに匹敵しません。ビデオストリーミングでは、通常、事前に圧縮されたビデオストリームをネットワーク経由で転送します。 HDストリームの場合、H.264でエンコードされることがよくあります。 VNCを使用する場合、ホストコンピュータは、ネットワークに送信する前に、画面のスナップショットを取得して圧縮する必要があります。ここにはいくつかの制約があります。

  • 強力な圧縮には、多くのCPUパワーが必要です。たとえば、90分の映画をH.264で高品質にエンコードすると、私のAthlon X2 4450eサーバーで4時間を超える圧縮時間がかかることがよくあります。通常、このような強力な圧縮は、リモートコントロールなどのリアルタイムアプリケーションには適していません。
  • 次に、圧縮の強度を低くすると、より多くのネットワーク帯域幅が必要になり、インターネットなどの低帯域幅接続で問題になる可能性があります。

さて、ビデオコーデックとリモートコントロールおよび画面共有ユーティリティによって適用される「トリック」がいくつかあります。まず、画面の変更を検出し、変更の(圧縮された)画像のみを転送しようとします。これは通常、帯域幅と処理能力の多くを節約します。ただし、フルスクリーンのビデオ転送では、画面全体を頻繁に再転送する必要があるため、あまり役に立ちません。上記のように、ホストはビデオコンテンツをデコードしてから送信する前に生の画像を再エンコードする必要があるため、現在のマシンでは、画面コンテンツをフルHDでrel-timeエンコードしてリモートコントロールアプリケーションにストリーミングできません。それらをネットワークに。一部の古いデュアルコアマシンは、フルHDビデオコンテンツをデコードするときに限界に達しています。フルHD画像をVNCクライアントに送信する前に、画面上で再度エンコードし直す必要があることについてさえ話していません。

VNCリモコンの速度を向上させるには、次のようにします。

  • ほとんどのVNCサーバー/クライアントは、複数の圧縮アルゴリズムをサポートしています。それらのいくつかは、狭い帯域幅用に最適化されており、一部は良好な画像品質用であり、一部は低遅延用です。これは、リモートコントロールの別の側面に触れます。サービスはインタラクティブなレイテンシの問題であるため(エンコード5分後のマウスクリックに対する反応を確認したくない)。
  • ホストマシンの画面変更の量を減らすようにしてください。たとえば、Windowsデスクトップエフェクト、アニメーションなどを無効にしてみてください。これにより、画面の変更された部分のみがネットワーク経由で転送されるため、帯域幅を節約できます。
  • 透明度などのホストの視覚効果を無効にしてみてください。 Vista/Win7で使用される透明なウィンドウは、画像の「圧縮性」を低下させます。単色/「平坦」な領域は、鮮やかな色や派手なディテールよりもはるかに効率的に圧縮できます。したがって、Aeroの透過性とデスクトップ効果を無効にすると、リモートコントロールの操作が本当にスピードアップします。ほとんどのリモートコントロールツールでは、接続時にこのような影響を自動的に無効にすることもできます(例:Microsoft RDPおよび一部のVNC実装)。
  • 同じことが背景画像にも当てはまります。 HD画像の代わりに単色の背景設定を使用してみてください。

VNCのもう1つの問題は、画面上の変更を検出する必要があることです。一部のVNC実装は「ダム」スクリーンショットを実行し、それらを前のスクリーンショットと比較して変更を検出します。これはすでに多くの力を取っています。より高度な実装のいくつかは、ここではより効率的ですが特別なドライバーのインストールが必要な特別なディスプレイドライバー(UltraVNCを確認)で動作します。

もちろん、ホストマシンでビデオを再生している場合、これはすべて役に立ちません。この場合、VNCは1秒あたり最大30のフルスクリーン画像を再エンコードし、ネットワーク経由で送信する必要があります。今日のCPUがリアルタイムで実行できるほとんどの圧縮では、そのようなストリームは8Mbps以上の帯域幅を必要とします。したがって、ほとんどのインターネット接続には適していません(特に、アップロード速度が1Mbps未満の非対称DSL接続について考えてください。そうです、ホスト側で重要なのはアップロード速度です)。

これはLANの使用に適しているかもしれませんが、ここではおそらく、メディアサーバーのセットアップについて、またはDLNA/UPnPメディアサーバーを使用してメディアを共有することについてさらに検討する必要があります(Win7メディアプレーヤーでもこれを実行できます)。次に、DLNAクライアントを使用して共有メディアを再生します。

15
SkyBeam

私が今まで使った中で最も速いVNCバリアントは ltraVNC がインストールされた Video Mirror Driver です。 RDPは依然として著しく高速ですが、それほど悪くはありません。

ZeroRemote について本当に良いことも聞いたことがありますが、テストはしていません。 TrueRemote がその後継であるようです。

4
afrazier

LANを介してビデオを見ようとしている場合、純粋な画面描画速度の点で最も速い解決策はおそらく Radmin です。

2
Shinrai

@Journeyman Geekが言うように、VNCは非効率的です。これは、リモートクライアントが何を表示しようとしているのかをVNCが「理解」する必要がないように設計されています。

RDPは実際にそうするので、ショートカットを取得して画像をより速くレンダリングできます。 RDPは、画面の変更を表すビットマップデータを送信する代わりに、たとえば、「クライアントがこの場所でウィンドウを開いた」などのもう一方の端を通知します。

それらを備えていないWindowsのバージョンにRDP機能を追加する「ターミナルサーバー」ハックがありますが、私はそれらを公式に推奨していません。自己責任で使用してください。ただし、Windows 7の「スターター」バージョンにも「リモートアシスタンス」(msra.exe)が付属していると思います。

ただし、VNCパフォーマンスを向上させるためにできることには、表示深度を8ビットに下げる、クライアント画面の解像度を下げる、クライアント側のビットマップキャッシュを使用するなどがあります。つまり、VNCが送信するデータが少なくて済み、パフォーマンスが向上します(ただし、見栄えがよくありません)。

1
LawrenceC

また、TeamViewerを試すこともできます。非商用利用は無料で、私にとってはかなり高速でした。ただし、HDビデオではテストしていません。

0
wizzard0

VNCを使用する必要がないパフォーマンスを求めている場合は、 LogMeIn のようなものを試してください。無料で問題なく動作します。

0
Jeff F.

私にとっては、インターネット(pingレートが50ミリ秒を超え、適切な帯域幅が1メガビット/秒を超える)を使用している場合でも、UltraVNCで非常に優れた動作が得られます。魔法は、接続設定の変更に付属しています。

ビューアを起動した後、[接続オプション]に移動し、[最適な設定を自動選択]を無効にし、[タイト]を有効にし、必要に応じて[Jpeg]を下げて品質を下げます(2〜4は正常に動作します)。

これが、フルカラーを適切なパフォーマンスで使用する唯一の方法です。その後、フルスクリーンムービーで高速スライドショーを実行するのに十分な数fpsが得られます(リモート開発を含め、実際の映画の視聴が遅すぎてオーディオがないため、私がやっていることすべてに十分です)。

また、サーバーの「プロパティ」では、「全画面のポーリング」、「フォアグラウンドウィンドウのポーリング」、「カーソルの下のウィンドウのポーリング」、「システムHookDll」、「低精度」がオンになっています。基本的に、左側にあるすべてのものです。

0
Andreas Reiff