FFMPEG - Zwei Audiodateien mit definierter Überlappungszeit zusammenführen

FFMPEG - Zwei Audiodateien mit definierter Überlappungszeit zusammenführen

Erfordernis

Ich möchte zwei Audiodateien mit vordefinierter Überlappungszeit zusammenfügen.

Wenn beispielsweise eine Überlappung von 10 Sekunden definiert ist, überlappen sich in der Ausgabe die letzten 10 Sekunden des ersten Audiosignals und die ersten 10 Sekunden des zweiten Audiosignals.

|<---- 1st mp3 file -------------------->                       |
|                        <-----------2nd mp3 file ------------->|

result:
|<-----------------------(overlap 10 sec )--------------------->|

Antwort1

  1. VerwendenffprobeDauer erhaltender 1. MP3-Datei.

  2. Ausführen ffmpegmiteine Verzögerungzur Verzögerung des Audiosignals undeine Mischungum die beiden Audiostreams zu einem zu mischen:

    ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[1]adelay=Ns|Ns[a1];[0:a][a1]amix=inputs=2[a]" -map "[a]" output.mp3
    
    • Ns= 1.mp3 duration- overlap duration. Wenn beispielsweise 1.mp330 Sekunden lang ist und Sie eine 10-Sekunden-Überlagerung wünschen, verwenden Sie 20s|20s.

    • Dies setzt 2.mp3Stereo voraus.

    • Wenn Ihre ffmpegVersion älter als 4.2 ist, verwenden Sie in einer Verzögerung Millisekunden statt Sekunden, wie in 20000|20000.

    • -map "[a]"weist an, ffmpegdie Ausgabe von amix zu verwenden, die willkürlich beschriftet ist [a]. Andernfalls wird dieStandardmäßiges Streamauswahlverhalten-mapverwendet wird. Wenn Sie damit einverstanden sind und die Auswirkungen verstehen, können Sie das Label und (wie ) gerne weglassen ...amix=inputs=2" output.mp3. Siehe auch-mapDokumentation.

verwandte Informationen