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
Verwenden
ffprobe
Dauer erhaltender 1. MP3-Datei.Ausführen
ffmpeg
miteine 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 beispielsweise1.mp3
30 Sekunden lang ist und Sie eine 10-Sekunden-Überlagerung wünschen, verwenden Sie20s|20s
.Dies setzt
2.mp3
Stereo voraus.Wenn Ihre
ffmpeg
Version älter als 4.2 ist, verwenden Sie in einer Verzögerung Millisekunden statt Sekunden, wie in20000|20000
.-map "[a]"
weist an,ffmpeg
die Ausgabe von amix zu verwenden, die willkürlich beschriftet ist[a]
. Andernfalls wird dieStandardmäßiges Streamauswahlverhalten-map
verwendet 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-map
Dokumentation.