GNU/Linux >> Linux Esercitazione >  >> Linux

Oltre 20 comandi FFmpeg per principianti

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 sono  22050 , 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 è:

  1. 96kbps
  2. 112kbps
  3. 128 kbps
  4. 160 kbps
  5. 192kbps
  6. 256kbps
  7. 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 come image-01.png , image-02.png , image-03.png e così via. Se utilizzi %3d , quindi il nome delle immagini inizierà come image-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.


Linux
  1. Cheat sheet per i comandi Linux comuni

  2. 8 comandi Linux per una gestione efficace dei processi

  3. Esempi di comandi DNF per principianti

  4. Linux per principianti:altri 10 comandi per manipolare i file

  5. I migliori comandi di base di Linux per principianti

Bash Heredoc Tutorial per principianti

I comandi FFmpeg più utili per la conversione di audio e video

Comandi di base di Linux per principianti

20 comandi di base di Ubuntu per principianti

I 40 comandi utili del server Linux per principianti e professionisti

17 migliori comandi di rete e risoluzione dei problemi di Linux per principianti