Использование демультиплексора concat (добавить тишину в начало и / или конец)
Используйте демультиплексор concat, если вы хотите избежать перекодирования основного сегмента. Этот метод работает для добавления тишины в начало или конец (или оба).
Используйте фильтр источника звука anullsrc для создания звука без звука. Вам нужно будет соответствовать формату, разметке канала и частоте дискретизации основного аудиофайла. Пример для создания 5.1-канального, частота дискретизации 48000 Гц, 1-секундный беззвучный аудиофайл AC3 (поскольку это был формат в вопросе):
ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
Теперь создайте текстовый файл с именем, в input.txt
котором перечислены файлы для объединения:
file 'silent.ac3'
file 'main.ac3'
Если вы хотите тишины в конце, просто переключите порядок файлов в input.txt
.
Теперь вы можете объединить файлы, используя демультиплексор concat :
ffmpeg -f concat -i input.txt -codec copy output.ac3
Использование фильтра concat (добавить тишину в начало и / или конец)
Используйте фильтр concat, если вы хотите сделать все в одной команде или если вы хотите выводить данные в формате, отличном от входного (поскольку этот метод все равно перекодирует). Этот метод работает для добавления молчания к началу или концу или к обоим.
Пример добавления 1 секунды паузы к началу стерео, частоте дискретизации 44100 Гц:
ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
Фильтрация приведет к перекодированию, а демультиплексор concat - нет.
В anullsrc рекомендуется совмещать расположение каналов и частоту дискретизации входа.
Если вы хотите добавить тишину до конца , а не просто изменить порядок входов данных на Concat фильтр: [1:a][0:a]concat=n=2:v=0:a=1
.
Использование фильтра adelay (добавить тишину в начало)
Используйте аудиофильтр adelay, если вы хотите сделать все в одной команде или если вы хотите вывести в формате, отличном от входного (поскольку этот метод все равно перекодирует). Это работает только для добавления тишины в начало файла.
Этот пример добавит 1 секунду тишины к началу стереовхода:
ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
- Фильтрация приведет к перекодированию, а демультиплексор concat - нет.
- Значение в миллисекундах. Пользователи последних версий (текущий git master или что-то более новое, чем FFmpeg 4.1) могут вместо этого использовать
1s
одну секунду.
- Каждый канал нуждается в собственной задержке. Например, будет использоваться монофонический вход
adelay=1000
, а вход 5.1 adelay=1000|1000|1000|1000|1000|1000
.
Использование фильтра apad (добавьте тишину до конца)
Используйте аудиофильтр apad, если вы хотите сделать все в одной команде, или если вы хотите выводить формат, отличный от входного (поскольку этот метод все равно перекодирует). Это работает только для добавления тишины в конец файла.
Этот пример добавит 1 секунду тишины в конец:
ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
Фильтрация приведет к перекодированию, а демультиплексор concat - нет.
pad_dur
Опция была добавлена после выхода FFmpeg 4.1, так что вам нужно будет использовать свежий билд от мерзавца главного филиала или ждать FFmpeg 4.2.