004 Principali conversioni di file multimediali tramite FFmpeg

27 Agosto, 2022 (15:18) | ffmpeg, Fotografia digitale, Linux, Video | By: sargonsei

004 Principali conversioni di file multimediali tramite FFmpeg
La sintassi del comando FFMPEG è
ffmpeg [opzioniGlobali] {[opzioniInput] input}… {[opzioniOutput] output}…
Le opzioni GLOBALI devono precedere tutte le altre opzioni.
Le opzioni di INPUT devono seguire le opzioni GLOBALI e precedere le opzioni di OUTPUT.
Le opzioni di OUTPUT devono seguire le opzioni GLOBALI e le opzioni di INPUT.

Le opzioni GLOBALI (es. [-y]=Se il file di output esiste già, sovrascrivere senza chiedere. [-n]=Se il file di output esiste già, terminare l’elaborazione senza salvarla.) possono essere omesse.
L’unica opzione di INPUT obbligatoria, è l’identificativo dei files o delle periferiche (minimo 1, ma possono essere più) che forniscono i flussi di dati da elaborare
Per esempio:

[-i videoIN.mp4] = un flusso di dati VIDEO in ingresso è fornito dal file videoIN.mp4.
[-i fotoIN.jpg] = un flusso di dati FOTO in ingresso è fornito dal file fotoIN.jpg.
[-i audioIN.mp3] = un flusso di dati AUDIO in ingresso è fornito dal file audioIN.mp3.
[-i /dev/video0] = un flusso di dati VIDEO in ingresso è fornito della webcam integrata.
[-f x11grab -i :0.0] = un flusso di dati VIDEO in ingresso è fornito da ciò che il server grafico X11 fa appare sullo schermo del computer.
[-f alsa -i default] = un flusso di dati AUDIO in ingresso è fornito dal microfono tramite periferica ALSA.
[-f pulse -i default] = un flusso di dati AUDIO in ingresso è fornito dal microfono tramite periferica PULSE.
[-f pulse -i $(pactl list short | grep monitor | awk '{print $2;}')] = un flusso di dati AUDIO in ingresso è fornito dalla periferica [alsa_output.pci-????_??_??.?.analog-stereo.monitor] (quindi l'audio che proviene dal microfono è ESCLUSO)

L’unica opzione di OUTPUT obbligatoria, è l’identificativo dei files (minimo 1, ma possono essere più) che conterranno i dati elaborati.
Per esempio:
[videoOUT.mp4] = un flusso di dati VIDEO in uscita verrà salvato nel file videoOUT.mp4.
[audioOUT.mp3] = un flusso di dati AUDIO in uscita verrà salvato nel file audioOUT.mp3.
[-frames:v 1 fotoOUT.png] = un flusso di dati FOTO in uscita verrà salvato nel file fotoOUT.png.
[-vframes 2 fotoOUT%3d.jpeg] = un flusso di dati FOTO in uscita verrà salvato nei files fotoOUT001.jpeg e fotoOUT002.jpeg.

Se l’utente non imposta uno o più parametri relativi alle elaborazioni da applicare, FFmpeg deduce queste informazioni dall’estensione del file da ottenere.

ffmpeg -i videoIN.mp4 videoOUT_a.avi # Convertire un file dal formato MP4 al formato AVI deducendo Codec ed opzioni varie dall'estensione del file di destinazione.
ffmpeg -i videoIN.mp4 -an videoOUT_b.avi # Convertire un file dal formato MP4 al formato AVI privo di audio, deducendo Codec ed opzioni varie dall'estensione del file di destinazione.
ffmpeg -i videoIN.mp4 -vn audioOUT_b.mp3 # Convertire un file dal formato MP4 al formato mp3 privo di immagini, deducendo Codec ed opzioni varie dall'estensione del file di destinazione.
# Elenco parametri possibili più comuni
# Inizio elenco parametri che, se non specificati, verranno dedotti da FFmpeg in base all'estensione del file multimediale in uscita
-acodec copy # Imposta come codec audio del file multimediale in uscita il medesimo usato per il file multimediale in entrata
-acodec libmp3lame # Imposta libmp3lame come codec audio del file multimediale in uscita
#
-vcodec copy # Imposta come codec video del file multimediale in uscita il medesimo usato per il file multimediale in entrata
-vcodec libx264 # Imposta libx264 come codec video del file multimediale in uscita
# Fine elenco parametri che, se non specificati, verranno dedotti da FFmpeg in base all'estensione del file multimediale in uscita
#

# Inizio elenco parametri che, se non diversamente specificato, di default restano invariati
-an # Il file multimediale in uscita sarà privo di audio
-filter:a areverse # Inverte il senso dell'audio
-filter:a atempo=0.5 # Dimezza la velocità dell'audio
-filter:a volume=0.5 # Dimezza il volume
-filter:a afade=in:st=0:d=1,afade=out:st=32:d=1 # Dissolvenza audio
#

-vn # Il file multimediale in uscita sarà privo di video
-filter:v rotate=30*(PI/180) # Ruota di 30 gradi in senso orario ciò che compare nel file multimediale in ingresso, ma lo schermo non viene ruotato.
-filter:v hflip # Specchia orizzontalmente
-filter:v vflip # Specchia verticalmente
-filter:v transpose=0 # Specchia e gira di 90 gradi in senso antiorario il video in ingresso
-filter:v transpose=1 # Gira di 90 gradi in senso orario il video in ingresso
-filter:v transpose=2 # Gira di 90 gradi in senso antiorario il video in ingresso
-filter:v transpose=3 # Specchia e gira di 90 gradi in senso orario il video in ingresso
-filter:v transpose=1,transpose=1 # Gira di 180 gradi il video in ingresso
-filter:v reverse # Inverte il senso del video
-filter:v setpts=2.0*PTS # Dimezza la velocità del video
-filter:v fade=in:0:30,fade=out:960:30 # Dissolvenza video
-filter:v scale=800:600 # Il video in uscita avrà risoluzione 800x600 pixels
-filter:v scale=800:-1 # La larghezza del video in uscita diventa 800 pixels, e l'altezza viene modificata rispettando le proporzioni del video in ingresso
-filter:v pad=width=2049:height=1152:x=500:y=300:color=green # Sovrappone il video in ingresso ad uno sfondo verde largo 2049 pixels ed alto 1152 pixels
-filter:v crop=640:360:320:120 # Ritaglia un video largo 640 pixels ed alto 360 pixels di cui il pixel in alto a sinistra dista 320 pixels dal bordo sinistro e 120 pixels dal bordo superiore del video in ingresso
#
-s 640x360 # Il video in uscita avrà risoluzione 640x360 pixels
-ss 10:23:45.67 # Il file multimediale in uscita inizia 10 ore, 23 minuti, 45 secondi e 67 centesimi di secondo dall'inizio del file multimediale in ingresso
-to 12:34:56.78 # Il file multimediale in uscita termina 12 ore, 34 minuti, 56 secondi e 78 centesimi di secondo dall'inizio del file multimediale in ingresso
-t 01:23:45.67 # Il file multimediale in uscita termina 1 ora, 23 minuti, 45 secondi e 67 centesimi di secondo dall'inizio del file multimediale in uscita
-fs 50M # Il file multimediale in uscita termina quando raggiunge le dimensioni di 50M
#
-map 0:v:0 -map 1:a:0 # Crea file multimediale contenente il video del file multimediale 0 (il primo) e l'audio del file multimediale 1 (il secondo) la cui durata è la medesima del più LUNGO dei due files multimediali in ingresso.
-map 0:v:0 -map 1:a:0 -shortest # Crea file multimediale contenente il video del file multimediale 0 (il primo) e l'audio del file multimediale 1 (il secondo) la cui durata è la medesima del più CORTO dei due files multimediali in ingresso.
#
# Fine elenco parametri che, se non diversamente specificato, di default restano invariati