Я понял, как можно объединить несколько аудиофайлов с помощью сложного фильтра, но борюсь со смещением звука в результирующем файле. Скажем, я хочу добавить промежуток в 1 секунду тишины между каждым объединенным файлом. Возможно ли это сделать с помощью FFmpeg?
решение1
Сгенерируйте нулевой аудиопоток и вставьте его с помощью обрезки.
Допустим, у вас есть три аудиофайла и вы хотите сделать между ними интервалы в 1 и 3 секунды соответственно. Тогда вы можете использовать
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
Если вам также необходимо обрезать входы,
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