Как добавить несколько аудиофайлов с указанием c раз в аудиофайл тишины с помощью ffmpeg? - PullRequest
0 голосов
/ 02 февраля 2020

Мне нужно наложить аудиофайлы в определенное время c на существующий файл silence.mp3. Примерно так:

[----[...audio1...]----------[...audio2...]---------------]

Я пробовал следующее, но оно не работает:

ffmpeg -y -i silence.mp3 -itsoffset 4 -i audio1.mp3 -itsoffset 30 -i audio2.mp3 -c:a copy final.mp3

Любая помощь будет оценена. Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2020

Существует несколько методов.

adelay, amix

Используйте фильтры adelay и amix :

ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "[0]adelay=4s:all=1[0a];[1]adelay=30s:all=1[1a];[0a][1a]amix=inputs=2[a]" -map "[a]" output.mp3

Обратите внимание, что фильтр amix уменьшит громкость на выходе, чтобы предотвратить ограничение. При необходимости используйте фильтры dynaudnorm или Volume.

adelay, фильтр concat

Или фильтры adelay и concat . Предполагается, что audio1.mp4 имеет длину 10 секунд, и оба входа имеют одинаковую частоту дискретизации и разводку каналов:

ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "[0]adelay=4s:all=1[0a];[1]adelay=16s:all=1[1a];[0a][1a]concat=n=2:v=0:a=1[a]" -map "[a]" output.mp3

anullsr c, concat demuxer

Или генерировать файлы без вывода сообщений в качестве разделителей с фильтром anullsr c :

ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -t 4 4.mp3
ffmpeg -f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 -t 16 16.mp3

Создать файл input.txt:

file '4.mp3'
file 'audio1.mp3'
file '16.mp3'
file 'audio2.mp3'

Затем использовать демультиплексор concat :

ffmpeg -f concat -i input.txt -c copy output.mp3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...