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 (da WAV a 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 (da MKV a 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 (da MP4 a MP3)
ffmpeg -i INPUT.mp4 -vn -c:a mp3 -b:a 192k -ar 44100 -ac 2 OUTPUT.mp3
Selezionare audio multitraccia da file video
Maggiori dettagli sullo switch -map sono disponibili a questo link della wiki ufficiale.
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 (da MP3 a MP4 con immagine per 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
Convertire Video in GIF (da MKV a GIF oppure da MP4 a GIF)
ffmpeg -i video.mkv video.gif ffmpeg -i video.mkv -r 4 video.gif (-r = framerate per secondo) ffmpeg -i video.mkv -r 4 -vf scale=640:-1 video.gif (scale a 640*auto)
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
Link alla tabella comparativa LUFS per piattaforme online di streaming, Film, TV e Gaming
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 --- valore da inserire nel comando seguente Input True Peak: -14.4 dBTP --- valore da inserire nel comando seguente Input LRA: 0.1 LU Input Threshold: -37.7 LUFS --- valore da inserire nel comando seguente 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
Spettro audio per Whatsapp story
ffmpeg -y -i untitled.ogg -loop 1 -i image_vert.jpg -filter_complex "[0:a]showwaves=s=1920x150:colors=Yellow:mode=line,format=yuv420p[v];[1:v][v]overlay=0:550[outv]" -map "[outv]" -map 0:a -shortest spettro-waveform-ffmpeg-podcast.mp4 -hide_banner
Comando 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
Questo è il risultato:
Encoding veloce con accelerazione hardware GPU
Per velocizzare encoding o transcode dei video, è possibile utilizzare la potenza di calcolo della GPU.
A questo link è possibile leggere una introduzione alle varie API integrate in FFMPEG per sfruttare questa opportunità.
Qui sotto un elenco di comandi da utilizzare sulle GPU dei produttori Intel, Nvidia e AMD.
Check accelerazione hardware
ffmpeg -hwaccels
Encoding con GPU Intel
A questo link Intel illustra come utilizzare l’accelerazione hardware di FFMPEG sulle proprie architetture.
ffmpeg.exe -hwaccel qsv -i input.mkv -c:v h264_qsv -b:v 1M -look_ahead 1 -c:a copy output.mkv "-look_ahead 1" = migliora la qualità video ma può essere rimosso se non supportato
Encoding con GPU Nvidia (WARNING da testare)
A questo link Nvidia illustra come funziona l’accelerazione hardware di FFMPEG sulle proprie architetture.
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input.mkv -c:v h264_nvenc -b:v 500k -c:a copy output.mkv
Ciclo FOR per comprimere più file
Questo ciclo FOR da usare su shell (Linux o Windows WLS).
Campi modificabili:
– filtro per MKV, modificare a piacimento (mkv, mp4, mov)
– mantiene il nome del file sorgente modificando il contenitore di output (MKV -> MP4)
for video in $(ls|grep mkv); do ffmpeg -i "${video}" -c:v libx264 -crf 40 -filter:v fps=fps=10 -c:a libopus -application voip -b:a 16k -ac 1 -cutoff 12000 $(echo "${video}"|sed 's/mkv/mp4/'); done
My contacts are in the footer below