Gaming over LAN, alternativa VNC?

15

Ok, fiz mais do que um pouco de lição de casa sobre isso e estou começando a pensar que o mundo se opõe de alguma forma a essa idéia.

Eu tenho um laptop em minha casa, o SB Core i3 com uma GPU GMA HD, que é absolutamente terrível para tudo visual, e eu gostaria de transmitir vídeo do meu equipamento de desktop de natureza 3D (descartando RDP e outros protocolos baseados em gancho).

A primeira resposta da maioria das pessoas a threads semelhantes está relacionada à largura de banda ou ao poder de processamento. Eu tenho tentado em primeiro lugar em uma LAN Gigabit, e meu equipamento de desktop tem 3930k com overclock, então eu sou da opinião de que DEVE haver um equilíbrio entre o grunhido da CPU e a largura de banda que me permita obter pelo menos 20FPS de atualização em tela cheia . Até agora, não posso usar o TightVNC, testando reproduzindo um vídeo em tela cheia na máquina host.

Então, para resumir, com mais de 30x a largura de banda do OnLive, como exatamente crio um nível ainda instável de feed de vídeo pela LAN em minha própria casa? É possível e como?

user1901982
fonte
1
Você já olhou para o RemoteFX ? "O RemoteFX oferece uma rica experiência ao usuário para Virtual Desktop Infrastructure (VDI), fornecendo um adaptador virtual 3D, codecs inteligentes e a capacidade de redirecionar dispositivos USB em máquinas virtuais". você pode precisar comprar o Server 2012. ;)
Ƭᴇcʜιᴇ007
verifique este projeto: spgt.sourceforge.net, que permite transmitir uma parte da área de trabalho e também encaminha os controles.

Respostas:

16

Uma solução de software inerentemente conterá muito atraso devido ao seguinte:

  • A leitura dos dados do buffer de estrutura da GPU é muito lenta.
  • Mesmo com uma taxa de bits de destino em torno de 80% da Ethernet de gigabit (você não deseja 100% de utilização devido às deficiências resultantes da saturação), a maioria dos codecs de vídeo utiliza uma quantidade enorme de CPU para codificar 1080p em tempo real. Mesmo se você tivesse a codificação assistida por GPU, estaria consumindo o poder de processamento do próprio dispositivo que está processando o seu jogo, provavelmente diminuindo muito a taxa de quadros do jogo, devido à fraca capacidade de multitarefa da maioria das GPUs entre programas separados.
  • A própria E / S Ethernet Gigabit sustentada - apenas enviando os dados finalizados pelo fio - consome uma CPU significativa devido a interrupções. À custa de alguma latência, você pode usar a moderação de interrupção, um recurso dos chipsets ethernet de servidor mais recentes, para reduzir o uso da CPU.

Se você quiser que ele seja suave e agradável, use um cartão de captura.

Aqui está um exemplo de um desses dispositivos: http://www.epiphan.com/products/frame-grabbers/vga2ethernet/

Este dispositivo tem o conceito geral de:

  • Você conecta o dispositivo à sua placa gráfica
  • Você conecta seu monitor ao dispositivo
  • Você conecta a saída Ethernet do dispositivo a um computador ou roteador
  • Você acessa a interface da Web do dispositivo através de Ethernet e, em seguida, possui streaming de vídeo, sem perdas, em tela cheia, se desejar

Como o dispositivo usa hardware dedicado para codificar os quadros e transmiti-los pela Ethernet, ele será muito suave, com FPS alto e confiável. Também simplifica bastante a configuração do software, eliminando a necessidade de soluções caras de pipeline no seu equipamento de jogo.

Se você não deseja gastar dinheiro e pode viver com um atraso extremo e um FPS muito baixo, pode tentar algo como escrever um pipeline no Gstreamer ou no VideoLAN (VLC) para capturar o buffer de quadros local, codificá-lo em algum codec de vídeo, e transmita-o via Shout ou RTP ou RTSP ou protocolo de streaming semelhante e faça o download / transmita-o do seu computador mais lento. Mas como eu avisei, isso será lento.

allquixotic
fonte
Obrigado, embora existam algumas suposições que poderiam ser facilmente esclarecidas. Definitivamente, eu não quero jogar em 1080p, na verdade 1280x720 a 24fps é o que estou procurando agora e diminuiria apenas para poder fazer funcionar. A idéia de captura parece interessante, mas como eu controlaria o host a partir disso e como é a latência? Ah, e eu ainda nem tentei com um jogo. A execução de um arquivo de vídeo de 320 x 240 para atualizar a tela inteira parece transformar o VNC em uma apresentação de slides. Eu sei que deve haver algo que eu possa fazer para obter mais proveito de uma solução baseada em software.
user1901982
Do nada, eu estimaria que a latência é de cerca de um ou dois quadros mais o tempo de ping em circunstâncias ideais.
Hagen von Eitzen
2
@ user1901982 Pegue o PlayClaw e use o recurso Virtual Webcam para converter seu jogo 3D em um feed de webcam. Em seguida, encontre uma maneira de baixa latência para transmitir a webcam virtual pela rede.
Darth Android
Essa é certamente uma ideia interessante. Eu usei o PlayClaw antes. A WebCam virtual que fornece é de qualidade razoavelmente rápida / decente para jogos em 3D. Você ainda tem que codificar a saída para comprimi-lo para transmissão de rede embora :)
allquixotic
2
@Somequixotic PlayClaw faz isso, na verdade, e essa é a sua "reivindicação à fama": lida com a codificação / compactação em vários threads (em oposição a Fraps, que faria a codificação no thread de renderização do jogo . Fraps pode ter mudado isso recentemente, mas há alguns anos, esse era o status quo). Se você possui a CPU, basta colocar o PlayClaw em alta compressão.
Darth Android
7

Você pode usar o streaming em casa do vapor. O meu funciona MUITO bem com minha área de trabalho conectada via LAN Gigabit e o laptop em 5Ghz AC. Lembre-se de passar pelas configurações e marque a caixa para priorizar o tráfego de vapor durante a transmissão.

randomhelpfulness
fonte
3

Existem mais algumas opções agora. Se você possui uma placa gráfica Nvidia recente, pode obter os benefícios da captura acelerada por hardware, sem o hardware extra. Chama-se "Gamestream" Você pode comprar um dos dispositivos Nvidia compatíveis com o protocolo ou baixar um aplicativo de código aberto chamado "Moonlight" http://moonlight-stream.com

Dave Butler
fonte
Isso requer Windows para o host, apenas o cliente é multiplataforma. Só queria notar que, para quem procura uma solução que não seja do Windows, como eu era quando encontrei este post.
robm
0

O Steam Remote Play é definitivamente uma opção. Joguei muitas vezes para, por exemplo, a Rocket League. Se você tiver uma boa conexão LAN nos dois lados, estará pronto. Mesmo pode conectar o gamepad no laptop.

webo80
fonte