Jouer sur LAN, alternative VNC?


15

D'accord, j'ai fait plus qu'un peu de devoirs à ce sujet et je commence à penser que le monde est en quelque sorte opposé à cette idée.

J'ai un ordinateur portable dans ma maison, SB Core i3 avec un GPU GMA HD qui est tout à fait terrible pour tout ce qui est visuel, et je voudrais diffuser des vidéos à partir de ma plate-forme de bureau de nature 3D (excluant RDP et autres protocoles basés sur le crochet).

La première réponse de la plupart des gens à des threads similaires est liée à la bande passante ou à la puissance de traitement. J'ai essayé avant tout sur un réseau local Gigabit, et mon ordinateur de bureau a un 3930k overclocké, donc je suis d'avis qu'il DEVRAIT y avoir un équilibre entre le grognement du CPU et la bande passante qui me permettrait d'obtenir au moins 20FPS de rafraîchissement plein écran . Jusqu'à présent, je ne peux pas utiliser TightVNC, tester en lisant une vidéo en plein écran sur la machine hôte.

Donc, pour résumer les choses, avec plus de 30 fois la bande passante d'OnLive, comment créer exactement un niveau de flux vidéo homogène sur LAN dans ma propre maison? Est-ce possible et comment?


1
Avez-vous déjà étudié RemoteFX ? "RemoteFX offre une expérience utilisateur riche pour Virtual Desktop Infrastructure (VDI) en fournissant un adaptateur virtuel 3D, des codecs intelligents et la possibilité de rediriger les périphériques USB dans les machines virtuelles." vous devrez peut-être acheter Server 2012. ;)
Ƭᴇcʜιᴇ007

vérifiez ce projet: spgt.sourceforge.net il permet de diffuser une partie du bureau, et aussi de transmettre les contrôles.

Réponses:


16

Une solution logicielle contiendra intrinsèquement beaucoup de décalage en raison des éléments suivants:

  • La lecture des données du framebuffer du GPU est très lente.
  • Même avec un débit cible d'environ 80% d'Ethernet gigabit (vous ne voulez pas une utilisation à 100% en raison des déficiences résultant de la saturation), la plupart des codecs vidéo utilisent une énorme quantité de CPU pour encoder 1080p en temps réel. Même si vous disposiez d'un encodage assisté par GPU, vous seriez alors en train de réduire la puissance de traitement de l'appareil même qui rend votre jeu, ce qui réduirait probablement beaucoup le débit d'images de votre jeu, en raison de la faible capacité de la plupart des GPU à effectuer plusieurs tâches entre plusieurs programmes.
  • Les E / S Gigabit Ethernet soutenues elles-mêmes - envoyant simplement les données finales sur le câble - consomment un processeur important en raison d'interruptions. Au détriment d'une certaine latence, vous pouvez utiliser la modération d'interruption, une caractéristique des jeux de puces Ethernet de serveur plus récents, pour réduire l'utilisation du processeur.

Si vous voulez qu'il soit fluide et agréable, vous devez utiliser une carte de capture.

Voici un exemple d'un tel appareil: http://www.epiphan.com/products/frame-grabbers/vga2ethernet/

Cet appareil a le concept général de:

  • Vous branchez l'appareil sur votre carte graphique
  • Vous branchez votre moniteur sur l'appareil
  • Vous branchez la sortie Ethernet de l'appareil sur un ordinateur ou un routeur
  • Vous accédez à l'interface Web de l'appareil via Ethernet, et vous disposez d'une vidéo en continu, sans perte, en plein écran si vous le souhaitez

Étant donné que l'appareil utilise du matériel dédié pour coder les trames et les diffuser sur Ethernet, il sera très fluide et à FPS élevé et fiable. Il simplifie également considérablement la configuration de votre logiciel, éliminant le besoin de solutions de pipeline coûteuses sur votre plate-forme de jeu.

Si vous ne voulez pas dépenser d'argent et pouvez vivre avec un décalage extrême et un FPS très faible, vous pouvez essayer quelque chose comme l'écriture d'un pipeline dans Gstreamer ou VideoLAN (VLC) pour capturer le tampon de trame local, le coder dans un codec vidéo, et le diffuser via Shout ou RTP ou RTSP ou un protocole de streaming similaire, puis le télécharger / diffuser à partir de votre ordinateur plus lent. Mais comme je vous l'avais prévenu, ce sera lent.


Merci, bien qu'il y ait quelques hypothèses qui pourraient facilement être clarifiées. Je ne veux certainement pas jouer en 1080p, en fait, 1280x720 @ 24fps, c'est ce que je cherche en ce moment et j'irais plus bas juste pour pouvoir le faire fonctionner. L'idée de capture semble intéressante, mais comment contrôler l'hôte à partir de cela et à quoi ressemble la latence? Oh, et je ne l'ai même pas encore essayé avec un jeu. Le simple fait d'exécuter un fichier vidéo 320x240 pour obtenir un rafraîchissement complet de l'écran semble transformer VNC en diaporama. Je sais qu'il doit y avoir quelque chose que je peux faire pour tirer le meilleur parti d'une solution logicielle.
user1901982

À l'improviste, j'estime que la latence est d'environ une ou deux images plus le temps de ping dans des circonstances optimales.
Hagen von Eitzen

2
@ user1901982 Saisissez PlayClaw et utilisez la fonction de webcam virtuelle pour convertir votre jeu 3D en flux webcam. Trouvez ensuite un moyen à faible latence pour diffuser la webcam virtuelle sur le réseau.
Dark Android

C'est certainement une idée intéressante. J'ai déjà utilisé PlayClaw. La WebCam virtuelle qu'elle fournit est de qualité relativement rapide / décente pour les jeux en 3D. Vous devez encore encoder la sortie pour la compresser pour la transmission réseau :)
allquixotic

2
@somequixotic PlayClaw fait cela, en fait, et c'est sa "revendication de la renommée": il gère l'encodage / compression dans plusieurs threads (contrairement à Fraps, qui ferait l'encodage sur le thread de rendu du jeu . Fraps aurait pu changer cela récemment, mais il y a quelques années, c'était le statu quo). Si vous avez le CPU, lancez simplement PlayClaw jusqu'à une compression élevée.
Dark Android

7

Vous pouvez utiliser le streaming à domicile à partir de la vapeur. Le mien fonctionne TRÈS bien avec mon bureau connecté via Gigabit LAN et l'ordinateur portable sur 5Ghz AC. N'oubliez pas de passer par les paramètres et de cocher la case pour prioriser le trafic vapeur pendant la diffusion.


3

Il y a maintenant plus d'options. Si vous avez une carte graphique Nvidia récente, vous pouvez bénéficier des avantages de la capture accélérée matérielle, sans le matériel supplémentaire. Il s'appelle "Gamestream". Vous pouvez acheter l'un des appareils Nvidia prenant en charge le protocole, ou vous pouvez télécharger une application open source appelée "Moonlight" http://moonlight-stream.com


Cela nécessite Windows pour l'hôte, seul le client est multiplateforme. Je voulais juste noter que pour tous ceux qui recherchent une solution non Windows, comme je l'étais lorsque j'ai trouvé ce post.
robm

0

Steam Remote Play est définitivement une option. J'ai joué beaucoup de fois, par exemple à Rocket League. Si vous avez une bonne connexion LAN des deux côtés, vous êtes prêt à partir. Même peut brancher la manette de jeu sur un ordinateur portable.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.