Fare screencast di videogiochi in Linux


In Unix si combinano, nel caso di attività complesse, strumenti più piccoli allo scopo di raggiungere un risultato in modo efficiente. Se volessi creare un filmato (detto in gergo tecnico screencast) che mostrasse un gioco, dovrei utilizzare diversi programmi, ciascuno avente un compito specifico nel montaggio di una parte audio o video. Mi piacerebbe innanzitutto anteporre nel mio videoclip un testo introduttivo con una voce che spiegasse di cosa si tratta. Ho in mente due applicazioni che sono presenti su quasi tutte le distribuzioni del sistema operativo Linux: Gimp, programma di grafica e fotoritocco; espeak, sintetizzatore vocale. Con Gimp ho creato un’immagine PNG contenente un testo bianco su sfondo nero; ho usato espeak per far leggere quel testo da una voce maschile in lingua italiana. Per farvi un’idea di cosa è capace espeak, provate questo comando nel terminale di Linux:

bc | wc | espeak

Ci sono due “pipe” (è una parola inglese) che collegano tre progammi: bc è la calcolatrice UNIX, fate qualche operazione aritmetica poi terminate con il comando quit; l’output viene passato al programma wc che conta il numero di caratteri utilizzati; infine questo numero diventa l’input di espeak che lo legge con una voce sintetizzata (in questo caso inglese).

Guarda “Espeak: italian language” su Youtube

Ho salvato l’audio prodotto da espeak in un file WAV; il programma è molto potente, legge il file di testo (opzione -f), sceglie la voce (italiana, maschile -vit+m4) e crea l’audio (opzione -w). Queste operazioni vengono fatte contemporaneamente nell’ambiente dei comandi di Linux:

espeak -f input.txt -vit+m4 -w output.wav

Infine ho assemblato l’audio e l’immagine per mezzo di dvd-slideshow: è risultato un videoclip di circa trenta secondi con un effetto grafico molto carino e la voce “fuoricampo”.

A questo punto occorre mettere da parte gli strumenti visti finora. Il mio scopo è mostrare come si installa il programma glc che cattura sequenze video dai giochi. Potete paragonare glc a fraps di Windows: la differenza è che glc registra l’output delle applicazioni OpenGL. C’è un’ampia gamma di software che fa la stessa cosa, vado a memoria: recordMyDesktop, Gnome video recorder, Xvidcap, Vokoscreen, ma questi programmi creano anche lag durante la partita perché non accedono direttamente al frame buffer della scheda grafica; invece glc (o SimpleScreenRecorder) è l’ideale, registra sia l’audio che il video dei giochi e il lag generato è minimo.

Ho “ripreso” l’installazione di glc con la funzione di videoregistrazione interna di Gnome shell (si attiva premendo i tasti CTRL+ALT+SHIFT+F8 e si disattiva allo stesso modo): tutto ciò che compare sullo schermo è stato salvato in un file webm (il formato video sponsorizzato da Google). Poi ho aggiunto una musica free, tra quelle suggerite da Youtube, con il programma mkvmerge che gestisce anche il formato webm. Lo screencast prodotto è di qualità amatoriale, ma è sufficiente per mostrare ciò che volevo.

Guarda “Install glc video recorder” su Youtube

Con glc vovevo creare un video di ShadowRun Returns che mostrasse la console di debug (si attiva con F1) e il comando deathray. Siccome il gioco fa solo salvataggi della partita nei checkpoint (posti all’inizio del livello), il raggio della morte è, contrariamente al nome, un vero salvavita per il protagonista di quest’avventura: personalmente, mi ha fatto risparmiare ore di tempo. 

Ora che glc è installato, faccio una rapida esposizione dei comandi:

glc-capture APP_OPENGL

l’applicazione parte come sempre, ma occorre premere i tasti SHIFT+F8 quando si vuole “catturarne” l’output; aggiungendo l’opzione -s al comando precedente, la registrazione inizia automaticamente non appena è disponibile il contesto OpenGL. Se ci piace, c’è l’opzione -i che inserisce l’indicatore di registrazione in corso nell’angolo superiore sinistro dello schermo. Inoltre, è molto utile specificare un nome di file al nostro video con l’opzione -o che accetta anche le seguenti macro

  • %app%, il nome dell’applicazione
  • %pid%, la ID del processo del gioco
  • %capture%, contatore dei video
  • %year%, anno a quattro cifre
  • %month%, mese a 2 cifre
  • %day%, giorno a 2 cifre
  • %hour%, ora a 2 cifre
  • %min%, minuto a due cifre
  • %sec%, secondo a 2 cifre

Catturare l’output di una applicazione OpenGL è dunque semplice, ma quando veniamo a ShadowRun Returns dobbiamo fare i conti col fatto che si tratta di un gioco gestito da Steam la cui interfaccia non usa OpenGL. Provate il comando:

glc-capture -i -o "%app%-%pid%-%day%-%hour%-%min%.glc" -v 4 -b back -e bgr steam -console -applaunch 234650

avvierà il gioco ma senza registrazione. Per dribblare il problema, possiamo impostare la modalità Big Picture di Steam perché usa OpenGL: l’opzione che ci serve è -bigpicture .

Adesso abbiamo il nostro file glc, possiamo riprodurlo direttamente con glc-play e accontentarci, ma siccome è un file di notevoli dimensioni (un videoclip di pochi minuti può occupare centinaia di MByte), forse è più utile elaborarlo con un software di compressione video.

glc-play Shadowrun-6460-18-22-34.glc -a 1 -o srr_audio.wav

Con questo comando l’audio viene estratto dal dump di glc e salvato in formato wav nel file srr_audio.wav che dobbiamo usare nel passaggio successivo quando l’output di glc-play viene dato a mencoder per la compressione in MPEG-4

glc-play Shadowrun-6460-18-22-34.glc -y 1 -o - | mencoder -demuxer y4m - -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=3000 -vf scale=1280:720 -audiofile srr_deathray.wav -oac mp3lame -o srr_deathray.avi

Ci sono programmi di editing video (cinerelle, kdenlive) molto sofisticati che vanno ben oltre gli scopi di questo articolo, ma con i quali è possibile realizzare video di ottima qualità. Inoltre, con i mezzi opportuni: computer di adeguata potenza, webcam, microcamera, microfono, una bella voce! si raggiungono risultati certamente migliori, lo screencast si fa più interessante e presenta i contenuti in maniera professionale.

Fonti:

  1. Glc homepage
  2. libelfhacks0
  3. libpacketstream0
  4. glc package
  5. glc tutorial
  6. github glc: Steam problem

Lascia un commento

Effettua il login con uno di questi metodi per inviare il tuo commento:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...