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

Unisciti alla discussione

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *