Granie przez LAN, alternatywa VNC?


15

Dobra, odrobiłem odrobinę pracy domowej i zaczynam myśleć, że świat jest w jakiś sposób przeciwny temu pomysłowi.

Mam w domu laptopa, SB Core i3 z procesorem graficznym GMA HD, który jest wyjątkowo straszny dla wszystkiego, co wizualne, i chciałbym przesyłać strumieniowo wideo z mojego komputera stacjonarnego o charakterze 3D (wykluczając RDP i inne protokoły oparte na hakach).

Pierwsza odpowiedź większości ludzi na podobne wątki dotyczy przepustowości lub mocy obliczeniowej. Próbowałem przede wszystkim w sieci Gigabit LAN, a mój komputer stacjonarny ma podkręcone 3930k, więc jestem zdania, że ​​MUSI istnieć równowaga między chrzęstem procesora a przepustowością, która pozwoliłaby mi uzyskać przynajmniej 20 klatek na sekundę odświeżenia pełnoekranowego . Jak dotąd nie mogę korzystać z TightVNC, testując odtwarzając wideo na pełnym ekranie na maszynie hosta.

Podsumowując, z ponad 30-krotnością przepustowości OnLive, w jaki sposób mogę stworzyć nawet niestabilny poziom wideo w sieci LAN we własnym domu? Czy to możliwe i jak?


1
Czy przeglądałeś już RemoteFX ? „RemoteFX zapewnia bogatą obsługę wirtualnej infrastruktury pulpitu (VDI), zapewniając wirtualną kartę 3D, inteligentne kodeki i możliwość przekierowywania urządzeń USB na maszynach wirtualnych”. jednak może być konieczne zakupienie Server 2012. ;)
— ᴇcʜιᴇ007

sprawdź ten projekt: spgt.sourceforge.net pozwala na przesyłanie strumieniowe części pulpitu, a także przekazuje sterowanie.

Odpowiedzi:


16

Rozwiązanie programowe z natury będzie zawierać wiele opóźnień z powodu:

  • Odczytywanie danych z bufora ramki GPU jest bardzo wolne.
  • Nawet przy docelowej szybkości transmisji około 80% gigabitowego Ethernetu (nie chcesz 100% wykorzystania z powodu upośledzeń wynikających z nasycenia), większość kodeków wideo zużyje ogromną ilość procesora do kodowania 1080p w czasie rzeczywistym. Nawet gdybyś miał kodowanie wspomagane przez GPU, traciłbyś moc obliczeniową od samego urządzenia, które renderuje grę, prawdopodobnie znacznie obniżając szybkość gry z powodu słabej zdolności większości GPU do wielozadaniowości między osobnymi programami.
  • Samo podtrzymywanie gigabitowego wejścia / wyjścia Ethernet - po prostu wysyłanie gotowych danych przez przewód - zużywa znaczny procesor z powodu przerw. Kosztem pewnego opóźnienia można użyć moderacji przerwań, funkcji nowszych chipsetów ethernetowych serwera, aby zmniejszyć zużycie procesora.

Jeśli chcesz, aby był płynny i przyjemny, powinieneś użyć karty przechwytującej.

Oto przykład jednego z takich urządzeń: http://www.epiphan.com/products/frame-grabbers/vga2ethernet/

To urządzenie ma ogólną koncepcję:

  • Podłączasz urządzenie do karty graficznej
  • Podłączasz monitor do urządzenia
  • Podłączasz wyjście Ethernet urządzenia do komputera lub routera
  • Uzyskujesz dostęp do interfejsu internetowego urządzenia przez sieć Ethernet i masz strumieniowe wideo, bezstratne, pełny ekran, jeśli chcesz

Ponieważ urządzenie wykorzystuje dedykowany sprzęt do kodowania ramek i przesyłania ich strumieniowo przez sieć Ethernet, będzie bardzo płynny, z wysokim FPS i niezawodny. Znacznie upraszcza także konfigurację oprogramowania, eliminując potrzebę stosowania drogich rozwiązań rurociągowych na twoim urządzeniu do gier.

Jeśli nie chcesz wydawać żadnych pieniędzy i możesz żyć z ekstremalnym opóźnieniem i bardzo niskim FPS, możesz spróbować czegoś takiego jak napisanie potoku w Gstreamer lub VideoLAN (VLC) w celu przechwycenia lokalnego bufora ramki, zakodowania go w jakimś kodeku wideo, i przesyłaj strumieniowo przez Shout, RTP lub RTSP lub podobny protokół przesyłania strumieniowego, a następnie pobierz / przesyłaj strumieniowo ze swojego wolniejszego komputera. Ale, jak cię ostrzegałem, będzie to powolne.


Dzięki, chociaż istnieje kilka założeń, które można łatwo wyjaśnić. Zdecydowanie nie chcę grać w rozdzielczości 1080p, w rzeczywistości to właśnie 1280x720 @ 24fps jest tym, co teraz kręcę i schodziłbym niżej, żeby móc działać. Pomysł przechwytywania wydaje się interesujący, ale w jaki sposób mam kontrolować hosta i jakie jest opóźnienie? Aha, i jeszcze nie próbowałem tego z grą. Samo uruchomienie pliku wideo 320x240 w celu odświeżenia całego ekranu wydaje się zmieniać VNC w pokaz slajdów. Wiem, że musi być coś, co mogę zrobić, aby uzyskać więcej z rozwiązania opartego na oprogramowaniu.
— user1901982,

Niespodziewanie oszacowałbym, że opóźnienie wynosi około jednej lub dwóch klatek plus czas pingowania w optymalnych okolicznościach.
— Hagen von Eitzen

2
@ user1901982 Grab PlayClaw i użyj funkcji wirtualnej kamery internetowej, aby przekonwertować grę 3D na kanał kamery internetowej. Następnie znajdź sposób opóźnionego przesyłania strumieniowego wirtualnej kamery przez sieć.
— Darth Android

To z pewnością ciekawy pomysł. Wcześniej korzystałem z PlayClaw. Virtual WebCam, który zapewnia, jest stosunkowo szybka / przyzwoita jakość do gier 3D. Nadal musisz zakodować dane wyjściowe, aby skompresować je do transmisji sieciowej :)
— allquixotic

2
@somequixotic PlayClaw właśnie to robi i to jest jego „roszczenie do sławy”: Obsługuje kodowanie / kompresję w wielu wątkach (w przeciwieństwie do Fraps, który wykonuje kodowanie w wątku renderującym grę . Fraps mógł to zmienić ostatnio, ale kilka lat temu, było to status quo). Jeśli masz procesor, po prostu podkręć PlayClaw do wysokiej kompresji.
— Darth Android

7

Możesz korzystać z domowej transmisji strumieniowej ze Steam. Mój działa BARDZO dobrze z moim komputerem podłączonym przez Gigabit LAN i laptopem na 5Ghz AC. Pamiętaj tylko, aby przejść przez ustawienia i zaznaczyć pole wyboru, aby nadać priorytet ruchowi Steam podczas przesyłania strumieniowego.


3

Teraz jest więcej opcji. Jeśli masz najnowszą kartę graficzną Nvidia, możesz skorzystać z przyspieszonego sprzętowo przechwytywania, bez dodatkowego sprzętu. Nazywa się „Gamestream”. Możesz kupić jedno z urządzeń Nvidia obsługujących protokół lub pobrać aplikację open source o nazwie „Moonlight” http://moonlight-stream.com


Wymaga to systemu Windows dla hosta, tylko klient jest wieloplatformowy. Chciałem tylko zauważyć, że dla każdego, kto szuka rozwiązania innego niż Windows, tak jak ja, kiedy znalazłem ten post.
— robm

0

Zdalna gra Steam jest zdecydowanie opcją. Wiele razy grałem np. W Rocket League. Jeśli masz dobre połączenie LAN po obu stronach, możesz zacząć. Nawet może podłączyć gamepad do laptopa.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.