
Я хочу объединить несколько аудиофайлов с фоновым изображением, чтобы создать видео. Я знаю, что могу добавить аудиофайлы с картой, как
-i audio1.mp3 -i audio2.mp3 -map 0 -map 1 -map 2
но как добавить определенные отрезки тишины между звуковыми дорожками, используя в качестве фона одно изображение?
решение1
Если я правильно понял ваш вопрос, вы можете предоставить несколько входных данных и объединить их:
ffmpeg \
-loop 1 -i image.jpg
-i audio1.wav \
-f lavfi -t 5 -i anullsrc \
-i audio2.wav \
-filter_complex "[1:a][2:a][3:a]concat=n=3:v=0:a=1[outa]" \
-map 0:v -c:v copy \
-map "[outa]" -c:a aac -b:a 192k \
-shortest \
out.mkv
Что это делает:
Здесь используется одно изображение в качестве входа № 0 (но вы можете заменить его
-f lavfi -i testsrc
на ваш реальный видеофайл). Входы № 1 и № 3 — это два аудиофайла, которые вы хотите использовать.Вход №2 — это фильтр, который генерирует пять секунд тишины.
Затем вы объединяете все аудиопотоки с помощью
concat
фильтра.Например, чтобы добавить третий аудиофайл, вам нужно указать два дополнительных аудиовхода (тишину и вашу фактическую дорожку), добавить метку входа для фильтра
concat
(например,[4:a][5:a]
) и увеличитьn=3
доn=5
.Выходной файл использует входное видео как есть (
-c:v copy
), а аудио перекодируется с помощью AAC на 192 кбит/с. Требуется перекодировать аудиопоток, поскольку вы применяете фильтр.Эта
-shortest
опция гарантирует, что кодирование закончится по окончании самого короткого (видео или аудио) потока.