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-shortestvuol 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 copycopia 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.mp3file 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
%1indica che gli andremo a definire “dall’esterno” l’input da convertire attraverso l’argomento passato.pauseindica 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 -1analogo a-loop 1dell’esempio precedente, crea un loop e lo associa all’input-i videoLooping.mp4input del video che vogliamo ripetere.-i audio.mp3input dell’audio-shortestl’elaborazione terminerà quando l’audio sarà completato.-map 0:v:0 -map 1:a:0la funzione map serve per prelevare il video del primo input (escludendo il suo eventuale audio).output.mp4nome 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.wavsono 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=4indica che vogliamo concatenare 4 filev=0indica che non vogliamo output videoa=1indica 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.wavil nome del file di output.
Buon divertimento!

Una risposta
[…] piccolo progetto ho utilizzato FFMPEG, nota libreria per la manipolazione del suono (leggi il mio articolo al riguardo con degli esempi d’uso). Questa libreria permette di applicare dei filtri al […]