Friday, September 02, 2016

:: Gravar gameplay sem perda de performance ::

Amiguinhos, há muito tempo eu sonhava em utilizar dois PCs (ou 1 PC e 1 Laptop) para fazer a gravação de jogatinas. Por que isso? Porque quando estamos jogando algo ferozmente violento (em termos de performance) como Battlefield 1, Star Citizen ou Batman Arkham Knight, todo e qualquer recurso do PC (CPU, GPU e Memória) que pudermos direcionar só pro game, menor é o risco de termos aquelas fatídicas quedas de frames, travadinhas, etc.

Sabem do que estou falando, certo?

Então minha primeira tentativa foi usando os seguintes componentes:
  1. PC Gamer
    1. Game da minha escolha
  2. Placa de captura Avermedia LGP
  3. Cabo HDMI
  4. Laptop ou PC fraco demais para ser gamer :P
    1. OBS Studio
Vide ilustração abaixo:


Ou seja:
  • eu clonava a imagem do monitor na saída HDMI
  • o video e audio do jogo (e do meu mic) passavam pela placa de captura
  • o laptop recebia esse audio+video, o OBS montava a cena (com logo, camera, etc), fazia o encoding do video final e gravava no HD
O resultado final era ruim, pois o hardware do laptop não era bom o suficiente para gravar esse video final com boa qualidade. Rolava truncagem de audio e/ou video, perda de frames... era um lixo.

Por conta disso eu comecei a sonhar "Como seria legal se eu pudesse montar toda a cena no meu PC Gamer, mais parrudo, passar todo o audio+video pra LGP, ela fazer o encoding e o laptop só gravar o resultado final..." Ou seja, o "trabalho pesado", que é o processo de encoding, ficaria concentrado na LGP que, meus bons amiguinhos, foi feita pra isso!

Meses se passaram... até que ontem resolvi fuçar valendo nisso. POOLTA QUE PARÉU! Não é que eu descobri como fazer isso?!?!

Porra! Era muito simples! Bom... não sei desde quando essa opção existe no OBS, mas só descobri ontem.

Então vamos ao tutorial do tio Kenjiro!

Ingredientes:
  • 1 PC gamer
  • 1 PC da xuxa ou laptop (pode ser um PC gamer também, mas aí a receita fica gourmetizada)
  • 1 placa de captura (no meu caso a Avermedia LGP)
  • 1 OBS Studio (não sei se rola essa mandinga com o Xsplit)
  • 1 cabo HDMI
  • 1 ou mais games, a gosto do freguês                        

Modo de preparo:
  1. no PC1 (gamer), execute o game de preferência + OBS
  2. no OBS, monte a(s) cena(s) como bem desejar
  3. NÃO FAÇA O OBS gravar o gameplay.
  4. conecte o cabo HDMI na saída da sua placa de video e a outra ponta na placa de captura
  5. na cena do OBS, clique com o botão direito do mouse, escolha a opção Fullscreen Projector (Preview) e selecione o display/tela conectado ao HDMI (no meu caso é Display 0)
  6. no PC2 (da xuxa/laptop/whatever) inicie o software de gravação (ex: REC Central, da avermedia) que acompanha sua placa de captura. Mande gravar, configurando a resolução e bitrate como melhor lhe convier.

ATENÇÃO: em momento algum o OBS vai fazer encoding de video, pois ele NÃO VAI GRAVAR/FAZER STREAMING.

No meu setup quem faz o encoding é a minha Avermedia LGP; quem grava é um pc/laptop mais fraco que o PC gamer, que vai estar apenas rodando o REC Central. Veja na figura abaixo:


No meu caso, tenho dois monitores. No Monitor 1 fico vendo apenas a imagem do jogo e o OBS fica minimizado; no Monitor 2 eu coloco o Preview Fullscreen do OBS.  A imagem do Monitor 2 está clonada na saída HDMI.

Ontem testei essa parada rodando Battlefield 1 em 1080p. No outro pc eu setei o REC Central pra gravar em 720p @60fps e bitrate de video em 12M (poderia ser mais tranquilamente). Por que não gravo a 1080p? Porque o limite da LGP é 1080p @30fps :(

Ah sim, dá pra ficar trocando de cena tranquilamente. Lá no "preview fullscreen" ele troca na hora. É uma delecea!

Bom, espero que esta dica/gambiarra seja útil para mais gente.

Deixem seus comentários, dúvidas ou sugestões.