Połączenie VNC

0

Witam, napisałem implementacje własną implementację VNC. Jednak szybkość przesyłania danych nie jest moim zdaniem zadowalająca. Mam podłączone przez switch dwa komputery w sieci Giganet. Niestety nawet w tej sieci szybkość przesyłania obrazu nie jest rewelacyjna. Jest ktoś w stanie mi pomóc i powiedzieć jak algorytmicznie podejść do napisania serwera i klienta VNC aby mieć zdalny podgląd pulpitu (i najlepiej zdalną kontrole). Chodzi mi o uzyskanie najlepiej płynnego obrazu. W jakim stopniu można zrobić taki płyny obraz? (tzn czy da radę uzyskać takie połączenie zdalne że jak w hoscie puszczę film to będę mógł go oglądać przez połączenie VNC? ).

0

Policz? o_o
załóżmy że rozdzielczość to 1600x900 px i 32 bity głębi kolorów na piksel. Daje nam to: 5,5 MB danych potrzebnych na nieskompresowany zrzut twojego ekranu. Zakładając że chciałbyś mieć płynność czyli ok 30 klatek / sekundę to musiałbyś przesyłaś 5,5*30 = 165MB/s czyli ~1,5Gb/s i taki musiałbyś mieć transfer danych między urządzeniami żeby przesyłać sobie swój obraz płynnie.
Widzisz więc że jedyne "algorytmiczne" rozwiązanie to użycie algorytmu kompresji. Problem w tym że dobra kompresja = wolna kompresja ;] Więc nawet jeśli uda ci sie skompresować obraz tak żeby dało się go wysyłać przy niższej przepustowości to może się okazać że narzut na kompresje i dekompresje będzie za duży żebyś mógł płynnie to przesyłać.

0

No dobra to rozumiem. Ale może da radę np jakoś zestreamować obraz komputera zdalnego? Nie będzie wtedy szybciej?

0

W zasadzie może źle się wyraziłem. Ja dokładnie potrzebuje tylko zobaczyć co jest na zdalnym komputerze. Nie musze nim sterować itp. Tylko sam obraz. Może jakieś przekierowanie obrazu z karty graficznej na stream out do sieci?

0

A czy ja gdzieś coś o jakimś sterowaniu mówiłem? Napisałem ci tylko ile danych musiałbyś przesłać żeby przekazać sam obraz...

0

Nie no rozumiem. Ale zastanawia mnie jak działa np obraz z kamery ip. Jakoś w tym przypadku przy podłączeniu w sieci gigalan nie ma zacięć itp. I obraz idzie na żywo. Jak uzyskać takie coś w właśnie pisząc klienta i serwer na komputery? Tylko że zamiast przesyłać obraz z jakieś kamery chciałbym pobrać obraz który jest aktualnie wyświetlany na monitorze.

0
Catosik napisał(a):

Chodzi mi o uzyskanie najlepiej płynnego obrazu. W jakim stopniu można zrobić taki płyny obraz?

Zależy jaka grafika jest przesyłana. Jeśli chcesz oglądać film, to jedynie kompresja, nie wiem czy
da się skompresować w real-time jakimś mpg4 - poszukaj. Poza tym optymalizacja:

  1. Przesyłamy tylko te fragmenty które się zmieniły
  2. X-serwer (o ile się nie mylę) operował na grafice wektorowej, przesyłane były całe komendy,
    typu rysuj prostokąt na takich współrzędnych z takim wypełnieniem.
0

no dobra. to może inaczej. a da radę uruchomić zdalnie na windowsie program ale żeby okna tego programu uruchomiły sie w komputerze lokalnym?

0
Catosik napisał(a):

no dobra. to może inaczej. a da radę uruchomić zdalnie na windowsie program ale żeby okna tego programu uruchomiły sie w komputerze lokalnym?

Tak po prawdzie, to nie wiem. Ale gdy się patrzy jak działa terminal server, to raczej lecą całe bitmapy. Skoro tam
lecą całe bitmapy, to wnioskuję, że mądrzej w ogóle nie można wykonać.

0

Ok, czyli najprościej to będzie zrobić uchwyt do konkretnego okna. Sprawdzić w jakiej jest on pozycji i jakiej jest wielkości. Zrobić "screen shot" tego prostokąta i wysłać przez sieć? czyli takie VNC ale tylko o konkretnych wymiarach i miejscu, tak żeby było tylko widać konkretne okno programu. W sumie zamiast przesyłać wtedy rozdzielczość 1920 x 1080 prześle powiedzmy 500 x 500 więc powinno to chodzić dużo szybciej w sieci giga

0

No dobra a jak działają np kamery ip? Przecież to idzie tam dużo szybciej i działa płynnie? Powiem szczerze że ja nie potrzebuje uzyskać zdalnej kontroli tylko zdalny podgląd pulpitu. Więc Wystarczy mi np nagrywanie filmu z pulpitu i Od razu rzucanie go przez sieć a np żeby klient bufforował sobie film. Co o tym myślisz? Może jakieś lepsze rozwiązanie?

0
Catosik napisał(a):

No dobra a jak działają np kamery ip? Przecież to idzie tam dużo szybciej i działa płynnie? Powiem szczerze że ja nie potrzebuje uzyskać zdalnej kontroli tylko zdalny podgląd pulpitu. Więc Wystarczy mi np nagrywanie filmu z pulpitu i Od razu rzucanie go przez sieć a np żeby klient bufforował sobie film. Co o tym myślisz? Może jakieś lepsze rozwiązanie?

Byś musiał sprawdzić jaką wydajność ma kompresja mpg do filmów. Ja nie interesowałem się nigdy algorytmami mpg, nie pomogę.
Ale jeśli da się film trwający 2h skompresować w czasie 2h, to... masz odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1