2013-01-24 17 views
19

Kann ich zwei Audio-MP3-Dateien mit ffmpeg in eine MP3-Ausgabedatei überlagern?So überlagern Sie zwei Audiodateien mit ffmpeg

+0

Sie beide entschlüsseln kann, mischen ([recht einfache Bedienung] (http://stackoverflow.com/a/4567156/453271)) und kodieren wieder –

+1

Können Sie bitte Befehle erwähnen TU das. Ich habe den anderen Beitrag überprüft, den Sie in Ihrem Link erwähnt haben, aber es hat nicht geholfen. – Faisal

+0

@Faisalcan du bitte guide..wie baue ich ffmpeg auf ubuntu? Wenn ja dann werde ich eine neue Frage auf Stackoverflow mit allen notwendigen Details posten. – TheFlash

Antwort

29

Sie können dies tun, mit ffmpeg mit dem amerge Filter:

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

Danke, es hat wirklich geholfen und ohne Fehler gemacht. Aber meine Audiodateien sind unterschiedlich lang. Haben Sie eine Idee, wie Sie die Ausgabedatei auf die maximale Länge der Eingabedateien generieren können? – Faisal

+0

bitte geben Sie das Beispiel an, indem Sie einen falschen Pfad und Wert angeben. Es wird geschätzt werden –

+0

Wird es so verwenden? {"ffmpeg", "-i", Audio, "-i", Audio2, "-filter_komplex", "amerge", "-c: a", "libmp3lame", "-q: a", "4" , DateinameVideoReplace}; –

0

Mit Bash

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

Example

+0

Danke, dass es geholfen hat. Was, wenn die Länge beider Dateien unterschiedlich ist? – Faisal

2

Wenn sie unterschiedlich lang sind, können Sie apad verwenden, um einen stillen Ton zum kürzesten

10

Check this out hinzuzufügen:

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 

Ich denke, es wird sicher helfen.

+0

das funktionierte besser für mich, als kümmern sich um die Unterschiede in der Länge .. so habe ich drei Sounds gemischt: ffmpeg -i flute_long.ogg -i gallop.ogg -i wind.ogg -filter_complex "[0: 0] [1: 0] amix = eingang = 3: duration = longest" main.ogg – cesarpachon

+0

Gibt es trotzdem eine Anpassung der Lautstärke einer der Eingangsdateien, sagen wir 20%? – chovy

4

Der Filter amix hilft beim Mischen mehrerer Audioeingänge in einen einzigen Ausgang.

Wenn Sie den folgenden Befehl:

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

Dieser Befehl 3 Audio-Eingangsströme mischen (I verwendet zwei MP3-Dateien, im Beispiel unten) in einen einzigen Ausgang mit der gleichen Dauer wie der erste Eingang und eine Dropout-Übergangszeit von 3 Sekunden.

Der amix Filter akzeptiert die folgenden Parameter:

  • Eingänge: Die Anzahl der Eingänge. Wenn nicht angegeben, wird standardmäßig 2.

  • Dauer: Wie die End-of-Strom zu bestimmen.

    • längste: Die Dauer des längsten Eingangs. (Standard)

    • Kürzeste: Die Dauer der kürzesten Eingabe.

    • erste: Die Dauer der ersten Eingabe.

  • dropout_transition: Die Übergangszeit, in Sekunden, für das Volumen Renormierung, wenn ein Eingangsstrom endet. Der Standardwert ist 2 Sekunden.

Zum Beispiel lief ich den folgenden Befehl in Ubuntu: FFMPEG Version: 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 verwendet wurde, eine variable Bitrate einzustellen. Denken Sie daran, dass Sie die libmp3lame-Bibliothek installieren müssen, falls erforderlich. Aber es wird auch ohne den -codec:a libmp3lame -q:a 0 Teil funktionieren.

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

+0

Perfekte Erklärung von amix :) – EnriMR

Verwandte Themen