Come registrare audio e video da ciò che compare sul monitor del nostro sistema Linux, usando solo due tool gratuiti: ffmpeg e lame.
Argomenti novità

Video dal Desktop

Tags/parole chiave: linuxdesktopffmpeglamecodec videoh264

Un video dalla scrivania

Spesso può essere necessario catturare un filmato di ciò che compare sul proprio desktop o, in generale, registrare un video da ciò che compare sul monitor del proprio computer.

Coloro che usano sistemi operativi commerciali sanno che, per fare queste operazioni, devono acquistare dei programmi appositi; quelli che usano Linux, probabilmente, non sanno che basta il potente ffmpeg per fare questo con ottimi risultati.

Un video dal desktop con Linux

Per fare un video dai programmi che compaiono sul proprio desktop è sufficiente una sola riga di comando:

$ ffmpeg -f x11grab -r 25 -s vga -i :0.0 /tmp/file.mpg

Come si può vedere, viene usato il parametro -f che forza il tipo di formato e predispone per la parola chiave x11grab, -r indica il numero di frames al secondo, -s le dimensioni (in questo caso, vga, 640 x 480 pixel); -i la periferica di input (in questo caso lo schermo di X Window) ed, infine, il file dove sarà salvato il risultato. Il video finale sarà un pezzo del mio schermo di 640 x 480 pixel a partire dall'angolo superiore sinistro del monitor.

Nulla mi impedisce di indicare un parametro numerico quale dimensione del video, nel mio caso 1680 x 1050 pixel; in questo caso avrei dovuto scrivere -s 1680x1050.

Ovviamente questo è il minimo; nella man page di ffmpeg ci sono alcuni esempi. Interessante questa variante, utile per coloro che, come me, usano due monitor:

$ ffmpeg -f x11grab -r 25 -s vga -i :0.0+1680,10 /tmp/file.mpg

In questo caso la cattura dello schermo, sempre di dimensioni 640 x 480, avviene a partire dalle coordinate di offset 1680 pixel (orizzontali) e 10 pixel verticali; in pratica, l'angolo superiore sinistro del mio secondo monitor, meno 10 pixel.

Catturiamo con un bel codec: H264

Recentemente, si fa un gran parlare intorno a questo codec; anche la telecamerina che ho recentemente acquistato lo usa per i suoi filmati. Eppoi è uno dei codec che vanno bene su Youtube... Quindi, registriamo il video dell'intero mio secondo monitor (1368 x 768) con questa codifica. Il comando sarà:

$ ffmpeg -f x11grab -r 25 -s 1368x768 -i :0.0+1680,0 -vcodec libx264 video_mon2.mp4

dove abbiamo -di diverso rispetto a prima- l'indicazione del codec da usare (il libx264) ed il nome del file con il corretto suffisso; il risultato sarà qualcosa di sorprendente! Un video di grandi dimensioni (in pixel), di dimensioni in bytes non grandi e con una qualità eccezionale. Provare per credere, come suggeriva qualcuno ormai tanti anni addietro...

Aggiungiamo anche l'audio

Non dobbiamo scordare che i moderni computer sono multimediali: quindi non possiamo trascurare il sonoro. Per questo ho dovuto compiere alcuni passaggi aggiuntivi, che, però, potrebbero dipendere dalla configurazione del mio sistema.

Prima di procedere, una raccomandazione: controlliamo che nel mixer sia abilitata la cattura dalla scheda sonora, altrimenti avremo dei file audio stranamente silenziosi...

Il comando di acquisizione diventa un po' più lungo. Eccolo di seguito:

$ ffmpeg -f oss -i /dev/dsp -f x11grab -r 25 -s 1368x768 -i :0.0+1680,0 -acodec pcm_s16le video_mon2.wav -an -vcodec libx264 -threads 0 video_mon2.mp4

Come si può vedere, abbiamo due periferiche di grabbing: quella audio (-f oss -i /dev/dsp) e quella video (-f x11grab); ad esse si aggiungono i rispettivi parametri di codifica (pcm16 bit wave, per l'audio ed il solito H264 per il video) ed i due file di salvataggio.

Il fatto di avere due file (di cui uno da convertire in mp3, se vogliamo) ci obbliga a due passaggi. Vediamoli.

Conversione dell'audio da wav a mp3. Questo è facile facile: si usa lame

$ lame video_mon2.wav video_mon2.mp3

Unione dei due file (audio e video) in un unico file: si torna ad usare ffmpeg

$ ffmpeg -i video_mon2.mp4 -i video_mon2.mp3 -acodec copy -vcodec copy -ab 128k -ar 44100 monidue.mp4

Notare i due file di input (mp4 ed mp3) la codifica dei due stream con la semplice copia dei formati preesistenti, una eventuale, pleonastica, ricodifica dello stream audio e, infine, il file di destinazione in formato H264, le cui informazioni possono essere richieste a ffmpeg:

$ ffmpeg -i monidue.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'monidue.mp4':
Duration: 00:01:19.84, start: 0.000000, bitrate: 728 kb/s
Stream #0.0(und): Video: h264, yuv420p, 1368x768, 25 tbr, 25 tbn, 50 tbc
Stream #0.1(und): Audio: mp3, 44100 Hz, mono, s16, 64 kb/s

Una piccola dimostrazione...

Ho voluto registrare un piccolo video. Una dosbox (emulatore del vecchio, caro DOS) ed un vecchio gioco spara-spara. Ne è venuto fuori un bel video d'azione: in questo caso il limite fisico della cattura era proprio la finestra del programma.

Letture collegate sul nostro Circuito

Altro su Blog di Japigia.com:

Convertire i video: Fare piccoli video con le fotocamere digitali e convertirli.

Come salvare i file FLV : Come salvare i file FLV con Linux.

Video su Linux: Alcuni video divulgativi su Linux.


Documento scritto e/o curato da Franco
Data pubblicazione: 13/03/2011 (19:40)
Ultimo aggiornamento: 14/03/2011 (09:36)


Condividi questo documento su Facebook...

 

I commenti a questo post

Lascia un commento o leggi quelli scritti dagli altri .

Linux
Il menu del Post:
usate firefox: il migliore
I più letti! novità
ContattaciPreferitiHome page RSS
Japigia di P.B. Arcano, Casarano (Lecce)
Realizzazione siti Internet, Portali, Grafica computerizzata.
E' vietato il plagio, anche parziale, dei contenuti del sito.
Per informazioni e suggerimenti: Contattateci!
Copyright by Japigia.com 2000/2012
Partita IVA 03471380752 - REA CCIAA Le/224124
*** Questo Sito Web NON utilizza Cookie ***