FFmpeg, script utili per l’elaborazione audio e video
La quarantena da Coronavirus mi ha portato a fare ordine nel mio computer, ed ho finalmente organizzato la mia cartella degli script realizzati con la libreria FFMPEG. Questa libreria per chi non lo sapesse è un “coltellino svizzero” per eseguire delle operazioni su file multimediali quali audio, video e immagini.
FFMPEG è uno strumento command-line (ovvero non ha un’interfaccia grafica) e può essere utilizzato per creare degli script leggerissimi e stabili, che possono essere richiamati con un click. Quindi molto utile se si lavora nell’ambito multimediale.
Ecco alcuni esempi:
Generare un video aggiungendo musica ad un’immagine fissa
ffmpeg -loop 1 -i immagine.jpg -i audio.mp3 -shortest -acodec copy -vcodec libx264 output.mp4
-loop 1
è il comando che precede l’input dell’immagine e ne crea un loop-i immagine.jpg
è l’immagine di input-i audio.mp3
è il file audio input-shortest
vuol dire ” termina l’elaborazione quando l’input piu corto è finito”, in questo caso il loop dell’immagine è considerato infinito rispetto a quello dell’audio che ha una durata limitata.-acodec copy
copia il contenuto dell’audio (valido solo per input audio in Mp3, altrimeni bisognera specificare un codec diverso)-vcodec libx264
è il codec per generare un mp4output.mp4
è il file di output.
Lo schema disegnato ti mostra che FFMPEG ha bisogno di creare un loop infinito dell’immagine e sommarla all’audio per generare l’output.
Come convertire qualsiasi file (sia audio che video) in MP3
ffmpeg -i input.wav -codec:a libmp3lame -b:a 320k output.mp3
-i input.wav
è il file di input che vogliamo covertire-codec:a libmp3lame
è il codec che vogliamo utilizzare per l’audio (mp3)-b:a 320k
è la qualità dell’esportazione dell’audio (a tua scelta tra 128k, 256k e 320k)output.mp3
file di uscita.
TIP: Non scrivere il nome file, usa il drag&drop!
Se vuoi evitare di scrivere ogni volta il nome input e il nome output puoi creare un file batch che prende in automatico il file tramite drag & drop, vediamo come fare.
Se sei in ambiente Windows, ti basta creare un file chiamato convert-to-mp3.bat e inserire all’interno il precedente codice, con una modifica:
ffmpeg -i %1 -codec:a libmp3lame -b:a 320k %1.mp3
pause
%1
indica che gli andremo a definire “dall’esterno” l’input da convertire attraverso l’argomento passato.pause
indica che quando lo script termina, non chiudiamo la finestra. In questo modo possiamo leggere il log che ha generato.
A questo punto salva il file e per eseguirlo trascina un file audio che vuoi convertire in mp3, ed vedrai partire la conversione FFMPEG:
Generare un loop video con musica
Questo ti permetterà di creare un loop video e di mixarlo con la musica. Ho utilizzato questo script per caricare su youtube i miei album, creando cosi uno still-life video.
Ecco il codice FFMPEG:
ffmpeg -stream_loop -1 -i videoLooping.mp4 -i audio.mp3 -shortest -map 0:v:0 -map 1:a:0 output.mp4
-stream_loop -1
analogo a-loop 1
dell’esempio precedente, crea un loop e lo associa all’input-i videoLooping.mp4
input del video che vogliamo ripetere.-i audio.mp3
input dell’audio-shortest
l’elaborazione terminerà quando l’audio sarà completato.-map 0:v:0 -map 1:a:0
la funzione map serve per prelevare il video del primo input (escludendo il suo eventuale audio).output.mp4
nome del file di output.
Unire una sequenza di file in un unico file audio
Questo puo esserti utile per i tuoi podcast, se li registri in parti e vuoi assemblarli, oppure vuoi creare un file che contiene un intero album musicale partendo dalle singole tracce.
ffmpeg -i 1.wav -i 2.wav -i 3.wav -i 4.wav -filter_complex [0:0][1:0][2:0][3:0]concat=n=4:v=0:a=1[out] -map [out] output.wav
-i 1.wav -i 2.wav -i 3.wav -i 4.wav
sono i file che vuoi unire, in ordine.-filter_complex
è il modo che ha FFMPEG per accedere alle operazioni complesse.[0:0][1:0][2:0][3:0]
sono gli input che vogliamo dare al filtro concat.concat
è il vero e proprio filtro, che avra i parametri dopo il simbolo=
e separati da un:
n=4
indica che vogliamo concatenare 4 filev=0
indica che non vogliamo output videoa=1
indica che vogliamo l’audio in uscita
[out]
è l’output del filtro concat, che volendo possiamo usare per un altro filtro, in catena.-map [out]
indica che nel file finale vogliamo l’uscita del filtro concat.output.wav
il nome del file di output.
Buon divertimento!
Commenti disabilitati.