FFmpeg è lo strumento a riga di comando che sta dietro a una parte enorme del software video esistente: molti programmi di conversione, lettori e servizi online lo usano internamente. Impararne le basi permette di fare in pochi secondi operazioni che con un'interfaccia grafica richiederebbero molti passaggi, e soprattutto di sapere esattamente cosa succede al file. Non serve memorizzare centinaia di opzioni: bastano una struttura chiara e una decina di comandi ricorrenti.
La struttura di un comando
Un comando FFmpeg segue sempre lo stesso schema:
ffmpeg [opzioni di ingresso] -i ingresso [opzioni di uscita] uscita
La regola più importante è che le opzioni si applicano al file che segue. Un'opzione scritta prima di -i riguarda l'ingresso; scritta dopo, riguarda l'uscita. Molti errori nascono da opzioni messe nel posto sbagliato.
Le opzioni più usate hanno un suffisso che indica il tipo di flusso: :v per il video, :a per l'audio, :s per i sottotitoli. Per esempio -c:v sceglie il codec video e -b:a il bitrate audio.
Prima di tutto: guardare cosa c'è nel file
Prima di convertire conviene sapere cosa si ha davanti:
ffprobe -hide_banner video.mp4
Il risultato elenca ogni flusso con codec, risoluzione, frame rate e lingua. Da qui si decide se basta un remux o se serve ricodificare.
Conversione standard per la massima compatibilità
ffmpeg -i ingresso.mov -c:v libx264 -preset slow -crf 21 -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart uscita.mp4
Che cosa fa ogni parte:
-c:v libx264: codifica il video in H.264;-preset slow: usa più tempo per comprimere meglio; i preset vanno daultrafastaveryslow;-crf 21: fissa il livello di qualità;-pix_fmt yuv420p: usa il formato pixel più compatibile;-c:a aac -b:a 160k: audio AAC a 160 kbps;-movflags +faststart: sposta l'indice all'inizio del file, così la riproduzione online parte prima che il file sia scaricato tutto.
Copiare senza ricodificare
Se il codec va bene e serve solo cambiare container:
ffmpeg -i ingresso.mkv -c copy uscita.mp4
Si può anche copiare un flusso e ricodificarne un altro, per esempio mantenere il video e convertire solo l'audio:
ffmpeg -i ingresso.mkv -c:v copy -c:a aac -b:a 192k uscita.mp4
Ridimensionare
Il filtro scale cambia la risoluzione. Indicando -2 per una delle dimensioni, FFmpeg calcola l'altra mantenendo le proporzioni e arrotondando a un numero pari, richiesto da molti codec:
ffmpeg -i ingresso.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 22 -c:a copy uscita_720p.mp4
Tagliare un estratto
ffmpeg -ss 00:01:30 -i ingresso.mp4 -t 00:00:45 -c:v libx264 -crf 20 -c:a aac estratto.mp4
-ss prima di -i fa partire la lettura dal punto indicato in modo rapido, -t stabilisce la durata. Ricodificando, il taglio è preciso al fotogramma. Con -c copy è molto più veloce ma il punto di inizio si sposta al keyframe più vicino.
Estrarre o sostituire l'audio
Estrarre l'audio senza ricodificarlo, se il codec è AAC:
ffmpeg -i video.mp4 -vn -c:a copy audio.m4a
Sostituire l'audio di un video con un altro file:
ffmpeg -i video.mp4 -i nuovo_audio.wav -map 0:v -map 1:a -c:v copy -c:a aac -shortest uscita.mp4
La mappatura delle tracce
Per impostazione predefinita FFmpeg sceglie automaticamente un solo flusso video e un solo flusso audio, di solito quelli con qualità più alta. Se un file contiene più lingue o sottotitoli, vanno selezionati esplicitamente con -map:
ffmpeg -i film.mkv -map 0:v:0 -map 0:a:0 -map 0:a:1 -map 0:s:0 -c copy uscita.mkv
La sintassi 0:a:1 significa «dal primo file in ingresso, il secondo flusso audio» (la numerazione parte da zero). Con -map 0 si copiano tutti i flussi.
Ricodificare un'intera cartella
Su Linux e macOS un ciclo nella shell converte tutti i file di una cartella:
for f in *.mov; do ffmpeg -i "$f" -c:v libx264 -crf 21 -c:a aac "${f%.mov}.mp4"; done
Le virgolette intorno ai nomi evitano problemi con gli spazi.
Abitudini che evitano errori
- Non sovrascrivete mai l'originale: scrivete sempre su un file nuovo.
- Provate su un estratto di 20-30 secondi prima di convertire un file lungo.
- Leggete l'output: FFmpeg segnala in giallo e rosso avvisi ed errori, spesso con indicazioni precise.
- Controllate il risultato con ffprobe, non solo guardandolo.
In sintesi
- Le opzioni si applicano al file che le segue: prima di
-il'ingresso, dopo l'uscita. - Usate ffprobe per capire cosa contiene un file prima di convertirlo.
-c copycambia container senza perdite; la ricodifica serve per cambiare codec o qualità.-mapseleziona esplicitamente le tracce da includere.- Provate sempre su un estratto e non sovrascrivete l'originale.