Gaming über LAN, VNC-Alternative?

15

Okay, ich habe mehr als ein paar Hausaufgaben gemacht und beginne zu denken, dass die Welt irgendwie gegen diese Idee ist.

Ich habe einen Laptop in meinem Haus, SB Core i3, mit einer GMA HD-GPU, die für alles Visuelle schrecklich ist, und ich möchte Videos von meinem Desktop-Rig in 3D streamen (RDP und andere Hook-basierte Protokolle ausschließen).

Die erste Antwort der meisten Leute auf ähnliche Threads ist entweder bandbreiten- oder leistungsabhängig. Ich habe in erster Linie versucht, eine Gigabit-LAN-Verbindung herzustellen, und mein Desktop-Rig hat eine übertaktete Geschwindigkeit von 3930.000, sodass ich der Meinung bin, dass es ein Gleichgewicht zwischen CPU-Grunzen und Bandbreite geben MUSS, mit dem ich mindestens 20 FPS Vollbildaktualisierung erzielen kann . Bisher kann ich TightVNC nicht verwenden, indem ich ein Video im Vollbildmodus auf dem Hostcomputer abspiele.

Zusammenfassend lässt sich sagen, wie genau ich bei über 30-facher Bandbreite von OnLive einen gleichmäßig unruhigen Video-Feed über LAN in meinem eigenen Zuhause erstellen kann. Ist es möglich und wie?

user1901982
quelle
1
Haben Sie sich schon mit RemoteFX beschäftigt ? "RemoteFX bietet eine umfassende Benutzererfahrung für Virtual Desktop Infrastructure (VDI), indem ein virtueller 3D-Adapter, intelligente Codecs und die Möglichkeit zum Umleiten von USB-Geräten in virtuellen Maschinen bereitgestellt werden." Möglicherweise müssen Sie jedoch Server 2012 kaufen. ;)
ƬᴇcƬᴇιʜ007
Überprüfen Sie dieses Projekt: spgt.sourceforge.net Ermöglicht das Streamen eines Teils des Desktops und leitet Steuerelemente weiter.

Antworten:

16

Eine Softwarelösung wird von Natur aus viele Verzögerungen aufweisen, und zwar aus folgenden Gründen:

  • Das Lesen von Daten aus dem Framebuffer der GPU ist sehr langsam.
  • Selbst mit einer Ziel-Bitrate von ca. 80% des Gigabit-Ethernet (Sie möchten keine 100% ige Auslastung aufgrund der durch die Sättigung verursachten Beeinträchtigungen) benötigen die meisten Video-Codecs eine enorme Menge an CPU, um 1080p in Echtzeit zu codieren. Selbst wenn Sie eine GPU-unterstützte Codierung hätten, würden Sie die Rechenleistung von dem Gerät, auf dem Ihr Spiel gerendert wird, wegnehmen, was wahrscheinlich die Framerate Ihres Spiels um ein Vielfaches senkt, da die meisten GPUs nicht in der Lage sind, Multitasking zwischen verschiedenen Programmen durchzuführen.
  • Die dauerhafte Gigabit-Ethernet-E / A selbst - nur das Senden der fertigen Daten über die Leitung - beansprucht aufgrund von Interrupts erhebliche CPU-Kosten. Auf Kosten einer gewissen Latenz können Sie die Interrupt-Moderation verwenden, eine Funktion neuerer Server-Ethernet-Chipsätze, um die CPU-Auslastung zu verringern.

Wenn Sie möchten, dass es reibungslos und angenehm ist, sollten Sie eine Capture-Karte verwenden.

Hier ist ein Beispiel für ein solches Gerät: http://www.epiphan.com/products/frame-grabbers/vga2ethernet/

Dieses Gerät hat das allgemeine Konzept:

  • Sie stecken das Gerät in Ihre Grafikkarte
  • Sie schließen Ihren Monitor an das Gerät an
  • Sie schließen den Ethernet-Ausgang des Geräts an einen Computer oder Router an
  • Sie greifen über Ethernet auf das Webinterface des Geräts zu und können Videos verlustfrei im Vollbildmodus streamen

Da das Gerät dedizierte Hardware verwendet, um die Frames zu verschlüsseln und über Ethernet zu streamen, ist es sehr flüssig, schnell und zuverlässig. Dies vereinfacht auch die Einrichtung Ihrer Software erheblich und macht teure Pipeline-Lösungen für Ihr Gaming-System überflüssig.

Wenn Sie kein Geld ausgeben möchten und mit extremen Verzögerungen und sehr niedrigen FPS leben können, können Sie versuchen, eine Pipeline in Gstreamer oder VideoLAN (VLC) zu schreiben, um den lokalen Framebuffer zu erfassen, und ihn in einem Videocodec zu codieren. und streamen Sie es über Shout oder RTP oder RTSP oder ein ähnliches Streaming-Protokoll und laden Sie es dann von Ihrem langsameren Computer herunter / streamen Sie es. Aber wie ich Sie gewarnt habe, wird dies langsam sein.

allquixotic
quelle
Vielen Dank, obwohl es einige Annahmen gibt, die leicht geklärt werden könnten. Ich möchte definitiv nicht in 1080p spielen, in der Tat ist 1280x720 @ 24fps das, worauf ich gerade Lust habe und ich würde niedriger gehen, nur um es funktionieren zu lassen. Die Capture-Idee scheint interessant, aber wie würde ich den Host davon aus steuern und wie ist die Latenz? Oh, und ich habe es noch nicht einmal mit einem Spiel ausprobiert. Nur eine 320x240-Videodatei auszuführen, um den gesamten Bildschirm zu aktualisieren, scheint VNC in eine Diashow zu verwandeln. Ich weiß, dass ich etwas tun muss, um mehr aus einer softwarebasierten Lösung herauszuholen.
user1901982
Aus heiterem Himmel schätze ich, dass die Latenz unter optimalen Umständen ein oder zwei Frames plus Ping-Zeit beträgt.
Hagen von Eitzen
2
@ user1901982 Greifen Sie zu PlayClaw und verwenden Sie die Funktion "Virtuelle Webcam", um Ihr 3D-Spiel in einen Webcam-Feed zu konvertieren. Suchen Sie dann nach einer Möglichkeit, die virtuelle Webcam mit geringer Latenz über das Netzwerk zu streamen.
Darth Android
Das ist sicherlich eine interessante Idee. Ich habe PlayClaw schon einmal benutzt. Die Virtual WebCam bietet eine relativ schnelle / anständige Qualität für 3D-Spiele. Sie müssen die Ausgabe jedoch noch codieren, um sie für die Netzwerkübertragung zu komprimieren :)
allquixotic
2
@somequixotic PlayClaw macht das eigentlich und das ist sein "Claim-to-Fame": Es handhabt die Codierung / Komprimierung in mehreren Threads (im Gegensatz zu Fraps, die die Codierung für den Rendering-Thread des Spiels übernehmen würden . Fraps hat dies möglicherweise geändert Vor kurzem, aber vor ein paar Jahren, war das der Status quo. Wenn Sie die CPU haben, drehen Sie PlayClaw einfach auf hohe Komprimierung.
Darth Android
7

Sie können das In-Home-Streaming von Steam verwenden. Meins funktioniert sehr gut mit meinem Desktop über Gigabit-LAN ​​und dem Laptop mit 5 GHz AC. Denken Sie daran, die Einstellungen zu überprüfen und das Kontrollkästchen zu aktivieren, um den Steam-Verkehr beim Streaming zu priorisieren.

zufällige Hilfsbereitschaft
quelle
3

Es gibt jetzt einige weitere Optionen. Wenn Sie über eine aktuelle Nvidia-Grafikkarte verfügen, können Sie die Vorteile einer hardwarebeschleunigten Erfassung ohne zusätzliche Hardware nutzen. Es heißt "Gamestream". Sie können eines der Nvidia-Geräte kaufen, die das Protokoll unterstützen, oder Sie können eine Open-Source-App namens "Moonlight" ( http://moonlight-stream.com) herunterladen

Dave Butler
quelle
Dies erfordert Windows für den Host, nur der Client ist plattformübergreifend. Ich wollte nur wissen, dass für alle, die nach einer Lösung suchen, die kein Windows ist, wie ich es war, als ich diesen Beitrag gefunden habe.
Robm
0

Steam Remote Play ist definitiv eine Option. Ich habe oft zB in der Rocket League gespielt. Wenn Sie auf beiden Seiten eine gute LAN-Verbindung haben, können Sie loslegen. Sogar das Gamepad lässt sich am Laptop anschließen.

webo80
quelle