Convertire audio e video con FFmpeg [HowTo Windows macOS Linux]

Convertire audio e video con FFmpeg [HowTo Windows macOS Linux]

Una buona fetta di noi utilizza software trovato chissà dove e soprattutto piattaforme web di tutti i tipi per convertire i propri file audio e video. C’è un’alternativa valida e completa a tutto ciò?

Secondo noi si e si chiama FFmpeg, un software multipiattaforma open source di registrazione, riproduzione e soprattutto conversione audio/video.

Attenzione: purtroppo questo software è disponibile solo da linea di comando e necessita di un minimo di conoscenza di codifica audio/video per essere utilizzato al meglio, ma per questo ci siamo noi.

A dire la verità esistono anche delle interfacce grafiche (GUI) per utilizzarlo ma di quelle parleremo in un secondo momento

Cos’è FFmpeg

FFmpeg non è proprio l’ultimo arrivato: è dal 2000 che circola e negli si è evoluto, sviluppato su Linux, può essere compilato ed eseguito sui principali sistemi operativi incluso Microsoft Windows e Apple macOS.

In realtà molti programmi anche famosi e utilizzano FFmpeg sotto il cofano: tra questi abbiamo Audacity, Blender, VLC, OBS, Avidemux…

FFmpeg è in grado di convertire praticamente tutti i formati audio/video/foto più comuni e anche di effettuare tagli e ridimensionamenti (ovviamente con le dovute limitazioni) senza perdere qualità.

Installare FFmpeg

Per scaricare FFmpeg recarsi qui: https://www.ffmpeg.org/download.html

Una volta scaricato FFmpeg si noterà che non c’è un installer, per cui è necessario renderlo disponibile da linea di comando: gli utenti più avanzati possono aggiungere la cartella dove risiedono i binari di FFmpeg alla variabile d’ambiente PATH (e ve lo consiglio se vi capita spesso di convertire file), altrimenti si può lavorare in maniera temporanea spostando i file da convertire all’interno della stessa cartella di FFmpeg. Gli utenti linux solitamente installando il pacchetto hanno già l’eseguibile a disposizione ovunque.

A questo punto basta aprire un terminale nella cartella dove ci sono i file da convertire:

  • Windows: tenendo premuto il tasti “shift” mentre si fa il click con il tasto destro all’interno della cartella nel menù apparirà la voce “Apri finestra PowerShell Qui”, cliccarci e si aprirà il terminale.
  • macOS: per aprire il terminale in una cartella occorre abilitare il tasto “Nuovo Terminale nella cartella” nelle preferenze (“Tastiera->Scorciatoie->Servizi”). Dopodichè utilizzarlo cliccando con il tasto destro. In alternativa se siete pratici potete aprire il terminale e navigare nella cartella richiesta tramite il comando “cd”.
  • Linux: dipende da molti fattori ma se siete utenti Linux probabilmente sapete già come utilizzare il terminale.

Ora siamo pronti per convertire quello che ci serve!

Convertire file audio

Per convertire un file audio da un formato ad un altro generalmente basta inserire inserire la giusta estensione nel file di uscita e ffmpeg utilizzerà automaticamente il codec giusto.

ffmpeg -i nomefile.ext fileconvertito.nuovaext

ad esempio per convertire il file money da ogg ad mp3:

ffmpeg -i money.flac money.mp3

Conversione in MP3

Per convertire file in mp3 basta seguire la regola generale di prima:

ffmpeg -i nomefile.ext nomefile.mp3

Volendo si può decidere il bitrate da utilizzare:

ffmpeg -i nomefile.ext -c:a libmp3lame -b:a 192k nomefile.mp3

In questo caso il file verrà convertito in mp3 (utilizzando il codec libmp3lame) e con bitrate 192kbs.

Conversione in OGG VORBIS

Per convertire file in ogg vorbis:

ffmpeg -i nomefile.ext -b:a libvorbis nomefile.ogg

Se si vuole decidere il bitrate:

ffmpeg -i nomefile.ext -c:a libvorbis -b:a 128k nomefile.mp3

In quest’ultimo caso verrà creato un file in ogg vorbis con bitrate 128kbs.

Conversione in AAC

Per convertire file in AAC (AAC-LC):

ffmpeg -i nomefile.ext -c:a aac -b:a 256k nomefile.aac

In alternativa se disponibile si può utilizzare come codec “libfdk_aac” e come container (cioè estensione) “m4a”.

Conversione in FLAC

Molto semplicemente per convertire in FLAC:

ffmpeg -i nomefile.ext nomefile.flac

N.B. Il FLAC (Free Lossless Audio Codec) è un codec Lossless, cioè senza perdita di qualità: è uno dei file più utilizzati dagli audiofili ma ovviamente produce file generalmente più grandi degli altri. Convertire da un formato lossy (come MP3 oppure AAC) ad uno lossless come il flac generalmente è insensato in quanto la qualità è già stata compromessa (se così si può dire), quindi si avrebbe un file con la stessa qualità del lossy ma che occupa decisamente più spazio.

Conversione in altri formati

Per tutti gli altri formati audio, se la regola generale non funziona, rivolgetevi a noi tramite i nostri canali social oppure consultate la documentazione di FFmpeg: https://www.ffmpeg.org/documentation.html

Estrazione di audio da video

Con FFmpeg è possibile anche estrarre l’audio da un video. Basterà inserire come file di origine un video e utilizzare i metodi fin’ora descritti.

Ad esempio:

ffmpeg -i bigbuckbunny.mkv -b:a libmp3lame audio.mp3

Così estrarremo l’audio dal video di big buck bunny, convertendolo in mp3.

Tagliare audio

Con FFmpeg è possibile anche tagliare la traccia audio da un punto ad un altro, per quanto consigli l’uso di software grafici come Audacity per farlo.

ffmpeg -i audiodatagliare.flac -ss 10 -t 15 audiotagliato.mp3

In questo caso avremo tagliato il file audio dal secondo 10 per un totale di 15 secondi (quindi dal secondo 10 al secondo 25), oltre ad averlo convertito in mp3.

E’ possibile anche decidere il tempo di fine invece che la durata del taglio utilizzando l’opzione “-to” al posto di “-t”.

Come notazione per le tempistiche si possono utilizzare queste 3 notazioni:

  • ’12’: 12 secondi
  • ’01:06:14′: 1 ora, 6 minuti e 14 secondi
  • ‘32.156’: 32,156 secondi

Convertire file video

I file video sono generalmente più complessi dei file audio, però il meccanismo di base è lo stesso. In questo caso anche se la regola generale per i file audio potrebbe funzionare occore fare attenzione al fatto che in video molto spesso per un container (che riconosciamo dall’estensione) si possono utilizzare differenti codifiche.
Ad esempio generalmente per il container mp4 si utilizza il codec H.264 ma questo può contenere anche altri formati come H.265, stesso discroso vale anche per i file mov.

Nel caso del video è possibile anche specificare cosa fare dell’audio (utilizzando gli stessi comandi descritti) oppure omettere il tutto per far si che se ne occupi FFmpeg da solo (consigliato).

Convertire in H.264/AVC (MP4, MOV, MKV)

Per convertire un file in H.264 MP4 (codec e formato molto utilizzati al giorno d’oggi):

ffmpeg -i nomefile.ext -c:v libx264 -crf 22 nomefile.mp4

Si può rimpiazzare il container mp4 con mov oppure mkv.
Il parametro crf riguarda il fattore di qualità: un valore di 17 è considerabile di qualità altissima (e quindi file molto grandi), salendo fino a circa 28 abbiamo una abbassamento di qualità ma risultati ancora soddisfacenti e soprattutto più piccoli, dopodichè si andrà scemando per un valore massimo di 51 (molto compresso e pochissima qualità).

Convertire in H.265/HEVC (MP4, MKV)

Per convertire un file in H.265:

ffmpeg -i nomefile.ext -c:v libx265 -crf 28 nomefile.mkv

Si può rimpiazzare il container mp4 con mov oppure mkv (dovrebbe funzionare anche il mov).
Il parametro crf è lo stesso dell’H.264, dove 28 corrisponde visivamente a circa 23 dell’H.264 ma con un file di circa la metà della grandezza.

Convertire in VP9 (WebM)

Per convertire un file in VP9:

ffmpeg -i nomefile.ext -c:v libvps-vp9 -b:v 5M nomefile.webm

In questo caso si convertirà un file in VP9 con un bitrate ci 5Mbps, in alternativa c’è il VBR Two-Pass (più laborioso, consiglio di consultare la documentazione) oppure si può utilizzare il crf come per l’H.264/H.265 utilizzando questo comando:

ffmpeg -i nomefile.ext -c:v libvps-vp9 -crf 31 -b:v 0 nomefile.webm

Qui si è utilizzato un un crf di 31 (consigliato per risoluzioni 1080p), è importante non tralasciare il parametro “-b:v 0”.

Convertire in altri formati

Ovviamente ci sono una miriade di container e codec per i file video, quindi se avete necessità non esitate a rivolgervi a noi tramite i nostri canali social oppure consultate la documentazione di FFmpeg: https://www.ffmpeg.org/documentation.html

Tagliare il video senza ricodificarlo

Con FFmpeg è possibile tagliare il video senza la necessità di ricodificarlo, cioè senza perdere qualità e facendo il tutto molto in fretta. Basta seguire le stesse regole dell’audio. Un Esempio può essere:

ffmpeg -i film.mkv -ss 01:15:32 -to 01:16:47 -c:v copy -c:a copy clip.mkv

In questo caso abbiamo estratto una clip dal tempo 01:15:32 (1 ora, 15 minuti e 32 secondi) al tempo 01:16:47 da un ipotetico film in mkv e senza nemmeno sapere i codec video e audio, mettendoli in file clip. A tempo record.

N.B. Sono i due parametri “-c:v copy” e “-c:a copy” ad indicare ad FFmpeg di dover copiare i due flussi audio e video così come sono senza ricodificarli, quindi sono molto importanti e da non tralasciare.

Cambiare risoluzione

Come si è evinto fin’ora FFmpeg è uno strumento molto potente e ci mette a disposizione anche altri strumenti oltre alla mera conversione, come ad esempio la possibilità di ridimensionare un video.

ffmpeg -i nomefile.mov -vf scale=1280:720 nomefile720p.mov

Con questo comando abbiamo scalato un file tramite il parametro “-vf scale=1280:720” per fargli avere una risoluzione 1280×720 pixel. Ovviamente si può utilizzare mentre si converte un qualsiasi video.

Attenzione ad inserire una risoluzione che abbia lo stesso aspect-ratio (in questo caso 16:9) perché altrimenti il file verrà “stirato”, volendo si può inserire solo la larghezza o solo l’altezza e inserire come altro parametro il valore “-1” così che FFmpeg calcoli il valore corretto:

ffmpeg -i file_2160p.webm -c:v libx265 -vf scale=-1:1080 file_1080p.mp4

Con quest’ultimo comando prendiamo un file UltraHD (3840×2160) in formato VP9 (WebM) e lo convertiamo in H.265 (MP4) con risoluzione FullHD (1920×1080). Da notare che abbiamo inserito “scale=-1:1080” dicendo ad FFmpeg di utilizzare come altezza 1080 pixel e di utilizzare una larghezza che rispetti lo stesso Aspect Ratio del file sorgente, cioè 1920 pixel dato che la sorgente è in formato 16:9.

Conclusioni

Abbiamo visto come FFmpeg sia uno strumento decisamente potente, nonostante ciò abbiamo in realtà scalfito solo superficie delle sue funzioni. In realtà ci sono una miriade di altri parametri e opzioni anche per i comandi che abbiamo utilizzato, quindi se avete necessità particolari scriveteci e verremo in vostro aiuto!

Rispondi

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.