2013-01-24 18 views
19

Posso sovrapporre due file audio mp3 in un file di uscita mp3 usando ffmpeg?Come sovrapporre due file audio usando ffmpeg

+0

È possibile decodificare entrambi, mescolare ([abbastanza semplice operazione] (http://stackoverflow.com/a/4567156/453271)) e la codifica di nuovo –

+1

Potete per favore citare comandi al Fai quello. Ho controllato l'altro post che hai menzionato nel tuo link ma non è stato d'aiuto. – Faisal

+0

@Faisalcan per favore guidami .. come si costruisce ffmpeg su ubuntu? se sì, invierò una nuova domanda su Stackoverflow con tutti i dettagli necessari .. – TheFlash

risposta

29

È possibile farlo con ffmpeg utilizzando il filtro amerge:

ffmpeg -i input1.mp3 -i input2.mp3 -filter_complex amerge -ac 2 -c:a libmp3lame -q:a 4 output.mp3 
+1

Grazie, ha davvero aiutato e fatto senza errori. Ma i miei file audio sono di lunghezza diversa. Hai idea di come generare il file di output alla lunghezza massima dei file di input? – Faisal

+0

per favore puoi dare l'esempio mettendo percorso falso e valore. Sarà apprezzato –

+0

Userà in questo modo ?? {"ffmpeg", "- i", Audio, "- i", Audio2, "-filter_complex", "amerge", "-c: a", "libmp3lame", "- q: a", "4" , filenameVideoReplace}; –

0

Con Bash

set 'amovie=a.mp3 [gg]; amovie=b.mp3 [hh]; [gg][hh] amerge' 
ffmpeg -f lavfi -i "$1" -q 0 c.mp3 

Example

+0

Grazie. cosa succede se la lunghezza di entrambi i file è diversa? – Faisal

2

Se sono lunghezza diversa, è possibile utilizzare apad per aggiungere un suono silenzioso per il più breve

10

Check this out:

ffmpeg -y -i ad_sound/whistle.mp3 -i ad_sound/4s.wav -filter_complex "[0:0][1:0] amix=inputs=2:duration=longest" -c:a libmp3lame ad_sound/outputnow.mp3 

penso che sarà di aiuto.

+0

questo ha funzionato meglio per me, come prendersi cura delle differenze di lunghezza .. questo è il modo in cui ho mixato tre suoni: ffmpeg -i flute_long.ogg -i gallop.ogg -i wind.ogg -filter_complex "[0: 0] [1: 0] amix = input = 3: duration = longest" main.ogg – cesarpachon

+0

C'è comunque qualche possibilità di regolare il volume su uno dei file di input del 20%? – chovy

4

Il filtro amix consente di combinare più ingressi audio in un'unica uscita.

Se si esegue il seguente comando:

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT 

Questo comando mescolare 3 ingressi flussi audio (ho usato due file mp3, nell'esempio qui sotto) in una singola uscita con la stessa durata del primo ingresso e un tempo di transizione da interruzione di 3 secondi.

Il filtro amix accetta i seguenti parametri:

  • ingressi: Il numero di ingressi. Se non specificato, il valore predefinito è 2.

  • durata: Come determinare la fine del flusso.

    • più lunga: La durata dell'ingresso più lunga. (predefinito)

    • più breve: La durata dell'input più breve.

    • primo: La durata del primo input.

  • dropout_transition: Il tempo di transizione, in secondi, per il volume rinormalizzazione quando un flusso di input termina. Il valore predefinito è 2 secondi.

Per esempio, ho eseguito il seguente comando in Ubuntu: la versione FFMPEG: 3.2.1-1 UBUNTU 16.04.1

ffmpeg -i background.mp3 -i bSound.mp3 -filter_complex amix=inputs=2:duration=first:dropout_transition=0 -codec:a libmp3lame -q:a 0 OUTPUT.mp3 

-codec:a libmp3lame -q:a 0 è stato utilizzato per impostare un bit rate variabile. Ricordare che è necessario installare la libreria libmp3lame, se necessario. Ma funzionerà anche senza la parte -codec:a libmp3lame -q:a 0.

Riferimento: https://ffmpeg.org/ffmpeg-filters.html#amix

+0

Perfetta spiegazione dell'amix :) – EnriMR

Problemi correlati