In questa guida, spiegherò come utilizzare il framework multimediale FFmpeg per eseguire varie operazioni di transcodifica audio, video e conversione con esempi. Ho compilato più di 20 comandi FFmpeg più comunemente e frequentemente usati per i principianti.
Continuerò ad aggiornare questa guida aggiungendo più esempi di volta in volta. Aggiungi questa guida ai segnalibri e torna tra un po' per verificare la presenza di aggiornamenti. Cominciamo, vero?
Installa FFmpeg in Linux
Se non hai ancora installato FFmpeg nel tuo sistema Linux, fai riferimento alla seguente guida.
- Installa FFmpeg in Linux
Comandi FFmpeg con esempi
La sintassi tipica del comando FFmpeg è:
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
Ora vedremo alcuni comandi FFmpeg importanti e utili.
1. Ottenere informazioni sui file audio/video
Per visualizzare i dettagli di un file multimediale, eseguire:
$ ffmpeg -i video.mp4
Risultato di esempio:
ffmpeg version n4.1.3 Copyright (c) 2000-2019 the FFmpeg developers built with gcc 8.2.1 (GCC) 20181127 configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-nvdec --enable-nvenc --enable-omx --enable-shared --enable-version3 libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.20.100 Duration: 00:00:28.79, start: 0.000000, bitrate: 454 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], 318 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default) Metadata: handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019. Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default) Metadata: handler_name : ISO Media file produced by Google Inc. Created on: 04/08/2019. At least one output file must be specified
Come puoi vedere nell'output sopra, FFmpeg mostra le informazioni sul file multimediale insieme ai dettagli di FFmpeg come versione, dettagli di configurazione, avviso di copyright, opzioni di build e libreria ecc.
Se non vuoi vedere il banner FFmpeg e altri dettagli, ma solo le informazioni sul file multimediale, usa -hide_banner
segnala come sotto.
$ ffmpeg -i video.mp4 -hide_banner
Risultato di esempio:

Vedere? Ora mostra solo i dettagli del file multimediale.
Lettura consigliata:
- Visualizza le informazioni sui file multimediali su Linux utilizzando MediaInfo
2. Conversione di file video in diversi formati
Poiché FFmpeg è un convertitore audio e video ricco di funzionalità e potente, è possibile convertire file multimediali tra diversi formati. Supponiamo, ad esempio, di convertire mp4
file in avi
file , esegui:
$ ffmpeg -i video.mp4 video.avi
Allo stesso modo, puoi convertire i file multimediali in qualsiasi formato a tua scelta.
Ad esempio, per convertire flv
di YouTube formatta i video in mpeg
formattare, eseguire:
$ ffmpeg -i video.flv video.mpeg
Se vuoi preservare la qualità del tuo file video sorgente, usa '-qscale 0'
parametro:
$ ffmpeg -i input.webm -qscale 0 output.mp4
Per controllare l'elenco dei formati supportati da FFmpeg, esegui:
$ ffmpeg -formats
3. Conversione di file video in file audio
Per convertire un file video in un file audio, specifica il formato di output come .mp3
o .ogg
o qualsiasi altro formato audio.
Il comando precedente converte input.mp4
file video in output.mp3
file audio.
$ ffmpeg -i input.mp4 -vn output.mp3
Inoltre, puoi utilizzare varie opzioni di transcodifica audio nel file di output come mostrato di seguito.
$ ffmpeg -i input.mp4 -vn -ar 44100 -ac 2 -ab 320 -f mp3 output.mp3
Ecco,
-vn
- Indica che abbiamo disabilitato la registrazione video nel file di output.-ar
- Imposta la frequenza audio del file di output. I valori comuni utilizzati sono22050
,44100
,48000
Hz.-ac
- Imposta il numero di canali audio.-ab
- Indica il bitrate dell'audio.-f
- Formato file di output. Nel nostro caso, èmp3
formato.
Il comando precedente visualizzerà un messaggio di avviso come di seguito.
[libmp3lame @ 0x5589ed539240] Bitrate 320 is extremely low, maybe you mean 320k The bitrate parameter is set too low. It takes bits/s as argument, not kbits/s
Questo perché abbiamo dato 320
bit/secondo come bitrate che è molto basso. Questo creerà un file di output più piccolo. Per un output di migliore qualità, usa il valore del bitrate come 320k
anziché solo 320
.
4. Modifica il volume dei file audio
FFmpeg ci consente di modificare il volume di un file audio utilizzando "volume filter"
opzione.
Ad esempio, il comando seguente ridurrà il volume della metà.
$ ffmpeg -i input.mp3 -af 'volume=0.5' output.mp3
Allo stesso modo, possiamo aumentare il volume come di seguito:
$ ffmpeg -i input.mp3 -af 'volume=1.5' output.mp3
5. Modifica la risoluzione dei file video
Se vuoi impostare una risoluzione particolare su un file video, puoi usare il seguente comando:
$ ffmpeg -i input.mp4 -filter:v scale=1280:720 -c:a copy output.mp4
Oppure,
$ ffmpeg -i input.mp4 -s 1280x720 -c:a copy output.mp4
Il comando precedente imposterà la risoluzione del file video specificato su 1280x720
.
Allo stesso modo, per convertire il file sopra in 640x480
taglia, esegui:
$ ffmpeg -i input.mp4 -filter:v scale=640:480 -c:a copy output.mp4
Oppure,
$ ffmpeg -i input.mp4 -s 640x480 -c:a copy output.mp4
Questo trucco ti aiuterà a ridimensionare i tuoi file video su dispositivi di visualizzazione più piccoli come tablet e cellulari.
6. Compressione di file video
È sempre una buona idea ridurre le dimensioni dei file multimediali per risparmiare spazio su disco.
Il comando seguente comprimerà e ridurrà le dimensioni del file di output.
$ ffmpeg -i input.mp4 -vf scale=1280:-1 -c:v libx264 -preset veryslow -crf 24 output.mp4
Tieni presente che perderai la qualità se provi a ridurre le dimensioni del file video. Puoi abbassare quel crf
valore a 23
o inferiore se 24
è troppo aggressivo.
Puoi anche transcodificare leggermente l'audio e renderlo stereo per ridurre le dimensioni includendo le seguenti opzioni.
-ac 2 -c:a aac -strict -2 -b:a 128k
7. Compressione di file audio
Proprio come per la compressione dei file video, puoi anche comprimere i file audio utilizzando -ab
flag per risparmiare spazio su disco.
Supponiamo che tu abbia un file audio di 320
bitrate kbps. Vuoi comprimerlo modificando il bitrate su qualsiasi valore inferiore come di seguito.
$ ffmpeg -i input.mp3 -ab 128 output.mp3
L'elenco dei vari bitrate audio disponibili è:
- 96kbps
- 112kbps
- 128 kbps
- 160 kbps
- 192kbps
- 256kbps
- 320kbps
8. Rimozione del flusso audio da un file video
Se non vuoi l'audio da un file video, usa -an bandiera.
$ ffmpeg -i input.mp4 -an output.mp4
Qui, 'an'
indica nessuna registrazione audio. In altre parole, questa opzione disattiva l'audio.
Il comando precedente annullerà tutti i flag relativi all'audio.
9. Rimozione del flusso video da un file multimediale
Allo stesso modo, se non desideri lo streaming video, puoi rimuoverlo facilmente dal file multimediale utilizzando 'vn'
bandiera. vn sta per nessuna registrazione video. In altre parole, questo comando converte il file multimediale specificato in file audio.
Il comando seguente rimuoverà il video dal file multimediale specificato.
$ ffmpeg -i input.mp4 -vn output.mp3
Puoi anche menzionare il bitrate del file di output usando '-ab'
flag come mostrato nell'esempio seguente.
$ ffmpeg -i input.mp4 -vn -ab 320 output.mp3
10. Estrazione di immagini dal video
Un'altra caratteristica utile di FFmpeg è che possiamo estrarre facilmente le immagini da un file video. Questo potrebbe essere molto utile, se vuoi creare un album fotografico da un file video.
Per estrarre immagini da un file video, usa il seguente comando:
$ ffmpeg -i input.mp4 -r 1 -f image2 image-%2d.png
Ecco,
-r
- Imposta la frequenza dei fotogrammi. Cioè il numero di fotogrammi da estrarre in immagini al secondo. Il valore predefinito è25
.-f
- Indica il formato di output, ovvero il formato dell'immagine nel nostro caso.image-%2d.png
- Indica come vogliamo denominare le immagini estratte. In questo caso, i nomi dovrebbero iniziare comeimage-01.png
,image-02.png
,image-03.png
e così via. Se utilizzi%3d
, quindi il nome delle immagini inizierà comeimage-001.png
,image-002.png
e così via.
11. Ritaglio di video
FFMpeg consente di ritagliare un determinato file multimediale in qualsiasi dimensione a nostra scelta.
La sintassi per ritagliare un file video è la seguente:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
Ecco,
input.mp4
- file video di origine.-filter:v
- Indica il filtro video.crop
- Indica il filtro di ritaglio.w
- Larghezza del rettangolo che vogliamo ritagliare dal video sorgente.h
- Altezza del rettangolo.x
- x coordinata del rettangolo che vogliamo ritagliare dal video sorgente.y
- coordinata y del rettangolo.
Supponiamo che tu voglia un video con una larghezza di 640
pixel e un'altezza di 480
pixel , dalla posizione (200,150
) , il comando sarebbe:
$ ffmpeg -i input.mp4 -filter:v "crop=640:480:200:150" output.mp4
Tieni presente che il ritaglio dei video influirà sulla qualità. Non farlo a meno che non sia necessario.
12. Converti una parte specifica di un video
A volte, potresti voler convertire solo una parte specifica (durata) del file video in un formato diverso. Supponiamo, ad esempio, che il comando seguente converta il primo 10
secondi di un dato file video.mp4 nel formato video.avi.
$ ffmpeg -i input.mp4 -t 10 output.avi
Qui specifichiamo il tempo in secondi. Inoltre, è possibile specificare l'ora in hh.mm.ss
formato.
13. Imposta le proporzioni su video
Puoi impostare le proporzioni di un file video utilizzando -aspect
segnala come sotto.
$ ffmpeg -i input.mp4 -aspect 16:9 output.mp4
Le proporzioni comunemente utilizzate sono:
- 16:9
- 4:3
- 16:10
- 5:4
- 2:21:1
- 2:35:1
- 2:39:1
14. Aggiunta dell'immagine poster ai file multimediali
Puoi aggiungere le immagini del poster ai tuoi file, in modo che le immagini vengano visualizzate durante la riproduzione dei file audio o video. Questo potrebbe essere utile per ospitare file audio in siti Web di hosting o di condivisione di video.
$ ffmpeg -loop 1 -i inputimage.jpg -i inputaudio.mp3 -c:v libx264 -c:a aac -strict experimental -b:a 192k -shortest output.mp4
15. Taglia un file multimediale utilizzando i tempi di inizio e fine
Per ridurre un video in una clip più piccola usando i tempi di inizio e fine, possiamo usare il seguente comando.
$ ffmpeg -i input.mp4 -ss 00:00:50 -codec copy -t 50 output.mp4
Ecco,
--s
- Indica l'ora di inizio del videoclip. Nel nostro esempio, l'ora di inizio è il 50° secondo.-t
- Indica la durata totale del tempo.
Questo è molto utile quando vuoi tagliare una parte da un file audio o video usando l'ora di inizio e di fine.
Allo stesso modo, possiamo tagliare il file audio come di seguito.
$ ffmpeg -i audio.mp3 -ss 00:01:54 -to 00:06:53 -c copy output.mp3
16. Dividi i file audio/video in più parti
Alcuni siti Web ti permetteranno di caricare solo una dimensione specifica del video. Ad esempio, Whatsapp consentirà solo 15
secondi video da impostare come messaggio di stato per gli utenti in India. In questi casi, puoi dividere i file video di grandi dimensioni in più parti più piccole come di seguito.
$ ffmpeg -i input.mp4 -t 00:00:30 -c copy part1.mp4 -ss 00:00:30 -codec copy part2.mp4
Qui, -t 00:00:30
indica una parte creata dall'inizio del video al 30° secondo del video. -ss 00:00:30
mostra il timestamp di inizio per la parte successiva del video. Significa che la seconda parte partirà dal 30esimo secondo e proseguirà fino alla fine del file video originale.
Recommended Download - Free Guide: "How to Start Your Own Successful Podcast"
17. Unire o unire più parti audio/video in una
FFmpeg unirà anche più parti video e creerà un unico file video.
Crea join.txt
file che contiene i percorsi esatti dei file a cui vuoi unire. Tutti i file devono essere dello stesso formato (stesso codec). Il nome del percorso di tutti i file dovrebbe essere menzionato uno per uno come di seguito.
file /home/sk/myvideos/part1.mp4 file /home/sk/myvideos/part2.mp4 file /home/sk/myvideos/part3.mp4 file /home/sk/myvideos/part4.mp4
Ora unisci tutti i file usando il comando:
$ ffmpeg -f concat -i join.txt -c copy output.mp4
Se ricevi un errore simile a quello di seguito;
[concat @ 0x555fed174cc0] Unsafe file name '/path/to/mp4' join.txt: Operation not permitted
Aggiungi "-safe 0"
:
$ ffmpeg -f concat -safe 0 -i join.txt -c copy output.mp4
Il comando precedente si unirà a part1.mp4
, part2.mp4
, part3.mp4
e part4.mp4
file in un unico file chiamato "output.mp4"
.
In alternativa, puoi utilizzare il seguente comando one-liner per unire tutti i file in una directory. Vai alla directory in cui hai i file ed esegui il comando seguente per unire i file denominati audio1.mp3
, audio2,mp3
e audio3.mp3
in output.mp3
.
$ ffmpeg -i "concat:audio1.mp3|audio2.mp3|audio3.mp3" -c copy output.mp3
18. Aggiungi i sottotitoli a un file video
Possiamo anche aggiungere sottotitoli a un file video usando FFmpeg. Scarica il sottotitolo corretto per il tuo video e aggiungilo al tuo video come mostrato di seguito.
$ fmpeg -i input.mp4 -i subtitle.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast output.mp4
19. Visualizza in anteprima o prova file video o audio
Potresti voler visualizzare l'anteprima per verificare o testare se il file di output è stato transcodificato correttamente o meno. Per farlo, puoi riprodurlo dal tuo Terminale con il comando:
$ ffplay video.mp4

Allo stesso modo, puoi testare i file audio come mostrato di seguito.
$ ffplay audio.mp3

20. Aumenta/diminuisci la velocità di riproduzione video
FFmpeg ti consente di regolare la velocità di riproduzione del video.
Per aumentare la velocità di riproduzione del video, esegui:
$ ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
Il comando raddoppierà la velocità del video.
Per rallentare il tuo video, devi utilizzare un moltiplicatore maggiore di 1
. Per ridurre la velocità di riproduzione, esegui:
$ ffmpeg -i input.mp4 -vf "setpts=4.0*PTS" output.mp4
21. Aumenta/diminuisci la velocità di riproduzione dell'audio
Per aumentare o diminuire la velocità di riproduzione dell'audio, utilizza il "atempo"
filtro audio. Il comando seguente raddoppierà la velocità dell'audio.
$ ffmpeg -i input.mp4 -filter:a "atempo=2.0" -vn output.mp4
Puoi utilizzare qualsiasi valore compreso tra 0.5
e 2.0
per l'audio.
22. Crea GIF animate
Utilizziamo le immagini GIF su quasi tutti i social network e professionali per vari scopi. Utilizzando FFmpeg, possiamo creare facilmente e rapidamente file video animati.
La seguente guida spiega come creare un file GIF animato utilizzando FFmpeg e ImageMagick in sistemi Linux e simili a Unix.
- Come creare GIF animate in Linux
Lettura consigliata:
- Gifski - Un codificatore GIF di alta qualità multipiattaforma
23. Crea video da file PDF
Ho raccolto molti file PDF, per lo più tutorial Linux, nel corso degli anni e salvati sul mio Tablet PC. A volte mi sento troppo pigro per leggerli dal tablet.
Quindi, ho deciso di creare un video da file PDF e guardarlo su dispositivi a grande schermo come una TV o un computer. Se ti sei mai chiesto come creare un filmato da una raccolta di file PDF, la seguente guida ti aiuterà.
- Come creare un video da file PDF in Linux
24. Ruota video
Se disponi di file video con orientamento diverso (verticale o orizzontale), puoi ruotarli come descritto nella seguente guida.
- Come ruotare i video utilizzando FFMpeg dalla riga di comando
25. Converti video in formato video WhatsApp
WhatsApp non supporta alcuni video. Non puoi condividerli con i tuoi contatti o impostarli nello stato di whatsapp. Nessun problema! Possiamo convertire facilmente i video in formato video supportato da WhatsApp con FFmpeg come descritto nel seguente link.
- Converti video in formato video WhatsApp con FFmpeg
26. Ingrandisci e rimpicciolisci i video
FFmpeg ha molti filtri utili per eseguire un'attività specifica. Uno di questi è zoompan. Usando il filtro zoompan, possiamo facilmente ingrandire e rimpicciolire periodicamente ogni X secondi. Fare riferimento al seguente link per maggiori dettagli:
- Come ingrandire e rimpicciolire i video utilizzando FFmpeg
27. Ottenere aiuto
In questa guida ho trattato i comandi FFmpeg più comunemente usati. Ha molte più opzioni diverse per eseguire varie funzioni avanzate. Per saperne di più, fai riferimento alla pagina man.
$ man ffmpeg
Lettura correlata:
- Tutorial Youtube-dl con esempi per principianti
E questo è tutto. Spero che questa guida ti abbia fornito abbastanza esempi di comandi FFmpeg per iniziare con FFmpeg.