Ich habe herausgefunden, wie ich mehrere Audiodateien mit einem komplexen Filter verketten kann, habe aber Probleme mit dem Versatz des Audios in der Ergebnisdatei. Angenommen, ich möchte zwischen jeder verketteten Datei eine Pause von 1 Sekunde einfügen. Ist das mit FFmpeg möglich?
Antwort1
Generieren Sie einen Null-Audiostream und fügen Sie diesen mit einem Trim ein.
Angenommen, Sie haben drei Audiodateien und möchten zwischen ihnen jeweils eine Pause von 1 und 3 Sekunden einlegen. Dann verwenden Sie
ffmpeg -i 1.mp3 -i 2.mp3 -i 3.mp3 -f lavfi -i anullsrc -filter_complex \
"[3]atrim=duration=1[g1];[3]atrim=duration=3[g2];
[0][g1][1][g2][2]concat=n=5:v=0:a=1" out.mp3
Wenn Sie auch die Eingänge trimmen müssen,
ffmpeg -i 1.mp3 -i 2.mp3 -i 3.mp3 -f lavfi -i anullsrc -filter_complex \
"[0]atrim=duration=20[t0];[1]atrim=duration=120[t1];[2]atrim=duration=45[t2];
[3]atrim=duration=1[g1];[3]atrim=duration=3[g2];
[t0][g1][t1][g2][t2]concat=n=5:v=0:a=1" out.mp3