Vai al contenuto

FFmpeg, script utili per l’elaborazione audio e video

Scritto da:

carlopeluso

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 mp4
  • output.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 file
    • v=0  indica che non vogliamo output video
    • a=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!

 

Articolo precedente

CSS Spiral Path, un esempio interattivo

Articolo successivo

Semplici gallerie immagini animate in puro CSS

Partecipa alla discussione