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?

użytkownik1901982
źródło
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.

allquixotic
źródło
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.

losowa pomoc
źródło
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

Dave Butler
źródło
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.

webo80
źródło