FFMPEG tutorial, da zero a 100 in poco tempo

Un video tutorial in italiano e una collezione di comandi per imparare ad usare FFMPEG in poco tempo.

FFMPEG è il coltellino svizzero per editare e convertire audio e video da riga di comando. In questa guida scoprirai:

  • che cos’è FFMPEG
  • dove scaricare FFMPEG
  • come installare FFMPEG su Windows
  • come usare FFMPEG da riga di comando

Tutte queste nozioni le puoi imparare direttamente in questo video tutorial in italiano di circa 2 ore, prodotto in collaborazione Andrea Ciraolo di Officine.me.

Qui sotto trovi la raccolta dei comandi illustrati nel video e che ti permetteranno di sfruttare al massimo questo fantastico tool.
Ricorda che i comandi sui sistemi Windows devono essere richiamati con l’estensione .exe:
ffmpeg → ffmpeg.exe

Iniziamo dall’Help

Comando per consultare l’help

ffmpeg -h full | more
ffmpeg -h encoder=mp3 -hide_banner (encoder/decoder/demuxer/muxer/filter)
ffmpeg -formats audio (audio/video)
ffmpeg -codecs

Comando per info sul file

ffmpeg -i file
ffprobe file

FFPROBE estrae dettagli in formato testo parsabile

Estrai formato e stream del file:

ffprobe -v error -show_format -show_streams input.mp4

Estrai la dimensione del file:

ffprobe -v error -show_entries format=size input.mp4

Comando precedente con output in formato json:

ffprobe -v error -show_entries format=size -print_format json input.mp4

Convertire audio da un formato all’altro (WAV to MP3)

ffmpeg -i audio.wav audio.mp3

ffmpeg -i audio.wav -c:a mp3 -b:a 192k -ar 44100 -ac 2 output.mp3

Convertire video da un formato all’altro (MKV to MP4)

Convertire video in MP4 

ffmpeg -i input.mkv -c:v libx264 -crf 19 -preset slow -c:a aac -b:a 64k -ac 2 out.mp4

ffmpeg -i input.mkv -c:a aac -b:a 128k -c:v libx264 -crf 23 output.mp4

Convertire video in MKV

ffmpeg -i input.mp4 -c:v libx264 -crf 18 -c:a aac output.mkv

ffmpeg -i input.mp4 -c:v h264 -c:a aac output.mkv

Convertire video in audio (MP4 to MP3)

ffmpeg -i INPUT.mp4 -vn -c:a mp3 -b:a 192k -ar 44100 -ac 2 OUTPUT.mp3

Selezionare audio multitraccia da file video

ffmpeg -i AAA.mkv -map 0:1 -acodec mp3 -bitrate 128 AAA.mp3

ffmpeg -i AAA.mkv -map 0:1 -c:a mp3 -b:a 192k -ar 44100 -ac 2 AAA.mp3

Convertire audio in video con immagine statica (es. MP3 to MP4 o pubblicare podcast su Youtube)

ffmpeg -loop 1 -framerate 2 -i IMMAGINE.jpg -i PODCAST.mp3 -c:v libx264 -preset fast -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p output.mp4

Tagliare audio o video

Dal secondo X per X secondi

ffmpeg -i input.mp4 -ss start_seconds -t duration_seconds output.mp4

ffmpeg.exe -i Fireplace-12-hours.mp4 -ss 00:00:00 -t 21600 -c:v copy -c:a copy  Fireplace-6-hours.mp4

Dal secondo X al secondo Y

ffmpeg -i input.mkv -ss start_seconds -to end_seconds output.mp4

ATTENZIONE: anteporre lo switch di seeking

L’ encoder legge il file da t0 (inizio) e perde tempo fin da subito a codificare anche quella parte di video che non ci serve. Evitiamolo spostando lo switch:

ffmpeg -ss [start_seconds] -i input.avi -t [duration_seconds] output.avi

Sostituire audio al video

Rimuovere audio dal video

ffmpeg -i INPUT.mp4 -c:v copy -an OUTPUT.mp4

Unire stream audio al video

ffmpeg -i OUTPUT.mp4 -i AUDIO.wav -shortest -c:v copy -c:a aac -b:a 256k COMBINED.mp4

ATTENZIONE: cosa significa “-shortest”

Questo switch stoppa la codifica quando termina lo stream di input più corto.

Regolare i LUFS per Alexa, Youtube, Spotify

Tabella valori Loudness da osservare sulle piattaforme online

tabella comparativa LUFS

LUFS per Alexa skill Flash Briefing

Link alla documentazione ufficiale Alexa Amazon Skill

ffmpeg -i PODCAST.mp3 -af loudnorm=I=-14:TP=-3:LRA=11:print_format=json -f mp3 PODCAST-Alexa.mp3

LUFS per Google Home

Link alla documentazione ufficiale Google Home

1-pass:

ffmpeg -i PODCAST.mp3 -af loudnorm=I=-16:dual_mono=true:TP=-1.5:LRA=11:print_format=summary -f null -

Qui sotto il risultato:

Input Integrated:    -27.2 LUFS --- da inserire nel comando sotto
Input True Peak:     -14.4 dBTP --- da inserire nel comando sotto
Input LRA:             0.1 LU
Input Threshold:     -37.7 LUFS --- da inserire nel comando sotto

Output Integrated:   -15.5 LUFS
Output True Peak:     -2.7 dBTP
Output LRA:            0.0 LU
Output Threshold:    -26.2 LUFS

Normalization Type:   Dynamic
Target Offset:        -0.5 LU

2-pass con i valori misurati:

ffmpeg -i PODCAST.mp3 -af loudnorm=I=-16:TP=-1.5:LRA=11:measured_I=-27.2:measured_TP=-14.4:measured_LRA=0.1:measured_thresh=-37.7:offset=-0.5:linear=true:print_format=summary output.wav

Modificare risoluzione, framerate e bitrate video

Rimuovere audio al video e ridimensionare a 640px

ffmpeg -i input -an -c:v libx264 -crf 26 -vf scale=640:-1 out.mp4

Ridimensionare risoluzione Video a 1080p

ffmpeg -i input -acodec copy -c:v libx264 -crf 26 -vf scale=1920:1080 out.mp4

Ridurre bitrate Video da 5M a 500k

ffmpeg -i input.mkv -b:v 500k -c:a copy output.mkv

CRF factor (Constant Rate Factor), quale valore utilizzare

########### CRF factor ###########
0 -------- 18 -------- 23 -------- 28 -------- 51
lossless --- better ---||--- worse ---------- worst

Concatenare più tracce audio

ffmpeg.exe -i 1.mp3 -i 2.mp3 -i 3.mp3 -i 4.mp3 -filter_complex '[0:0][1:0][2:0][3:0]concat=n=4:v=0:a=1[out]' -map '[out]' AudioUnito.mp3

ATTENZIONE: il primo file 1.mp3 corrisponde a 0:0 e così via.

Mixare più tracce audio in una sola

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex ‘amix=inputs=3:duration=first:dropout_transition=3’ OUTPUT

Spettro audio (waveform) per video Podcast

ffmpeg -y -i audio-podcast.mp3 -loop 1 -i image-fhd-1920x1080.png -filter_complex "[0:a]showwaves=s=1920x150:colors=Yellow:mode=line,format=yuv420p[v];[1:v][v]overlay=0:550[outv]" -map "[outv]" -pix_fmt yuv420p -map 0:a -c:v libx264 -c:a copy -shortest spettro-waveform-ffmpeg-podcast.mkv -hide_banner

Comando con tabulazione per shell Linux

ffmpeg -y -i audio-podcast.mp3 -loop 1 -i image-fhd-1920x1080.png -filter_complex
    "[0:a]showwaves=s=1920x150:colors=Yellow:mode=line,format=yuv420p[v]; \
    [1:v][v]overlay=0:550[outv]" \
    -map "[outv]" -pix_fmt yuv420p \
    -map 0:a -c:v libx264 -c:a copy -shortest spettro-waveform-ffmpeg-podcast.mkv \
    -hide_banner

Note alla sintassi

-y = sovrascrive senza conferma file di output se esistente
[0] = audio-podcast.mp3
[1] = image-fhd-1920x1080.png
1920x150 = larghezza x altezza waveform/spettro
overlay=0:350 = 0px da destra, 350px dall’alto
-hide_banner = non stampa a video le info iniziali, utili ai developer di FFMPEG
Ecco il risultato.