← Tutti gli articoliLinux e strumenti

Linux e strumenti

Come unire più file mp3 mettendo un fade all'inizio e alla fine della traccia

Matteo Galacci ·

Serve FFmpeg con encoder libmp3lame: su Debian/Ubuntu installa ffmpeg. Metti prima.mp3 e seconda.mp3 nella cartella di lavoro; gli esempi seguenti presumono 30 secondi per ciascun file.

Un fade attenua l’inizio o la fine di una traccia; non è un crossfade, che sovrappone due brani. Con due file della durata di 30 secondi ciascuno, questo esempio applica due secondi di fade-in e fade-out a ogni traccia, quindi le concatena:

ffmpeg -n -i "prima.mp3" -i "seconda.mp3" -filter_complex \
"[0:a]aresample=44100,aformat=channel_layouts=stereo,asetpts=PTS-STARTPTS,afade=t=in:st=0:d=2,afade=t=out:st=28:d=2[a];[1:a]aresample=44100,aformat=channel_layouts=stereo,asetpts=PTS-STARTPTS,afade=t=in:st=0:d=2,afade=t=out:st=28:d=2[b];[a][b]concat=n=2:v=0:a=1[out]" \
-map "[out]" -c:a libmp3lame -q:a 2 "unito.mp3"

-n impedisce di sovrascrivere un output esistente. Per durate diverse, imposta l’inizio del fade-out a durata meno due secondi: 28 non significa “28 secondi a volume pieno”. La ricodifica MP3 comporta perdita di qualità; conserva gli originali. L’encoder libmp3lame deve essere disponibile nella tua build.

Puoi leggere la durata con ffprobe, come nell’esempio PHP. La vecchia ricetta SoX con fade t 2 28 2 non descriveva correttamente una traccia di 30 secondi: il parametro centrale è il punto finale del fade-out.

Misura e verifica

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "prima.mp3"
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "unito.mp3"

Controlla anche la seconda traccia prima di scegliere il suo fade-out. Con due tracce da 30 secondi l’output deve durare circa 60 secondi, con una piccola tolleranza per il padding MP3. Ascolta inizio, passaggio intorno a 30 secondi e fine: le due tracce sfumano separatamente, senza sovrapposizione.

Fonti e approfondimenti