У меня есть аудиофайл AC3 5.1, в который я хотел бы вставить x секунд тихого звука в начале. Это не имеет никакого отношения к мультиплексированию видео, поэтому его смещение бесполезно, поскольку кажется, что оно работает только с аудиопотоком, сопровождающим видео. Я хотел бы добиться этого с помощью ffmpeg. Есть идеи?
14
Ответы:
Использование демультиплексора concat (добавить тишину в начало и / или конец)
Используйте демультиплексор concat, если вы хотите избежать перекодирования основного сегмента. Этот метод работает для добавления тишины в начало или конец (или оба).
Используйте фильтр источника звука anullsrc для создания звука без звука. Вам нужно будет соответствовать формату, разметке канала и частоте дискретизации основного аудиофайла. Пример для создания 5.1-канального, частота дискретизации 48000 Гц, 1-секундный беззвучный аудиофайл AC3 (поскольку это был формат в вопросе):
Теперь создайте текстовый файл с именем, в
input.txt
котором перечислены файлы для объединения:Если вы хотите тишины в конце, просто переключите порядок файлов в
input.txt
.Теперь вы можете объединить файлы, используя демультиплексор concat :
Использование фильтра concat (добавить тишину в начало и / или конец)
Используйте фильтр concat, если вы хотите сделать все в одной команде или если вы хотите выводить данные в формате, отличном от входного (поскольку этот метод все равно перекодирует). Этот метод работает для добавления молчания к началу или концу или к обоим.
Пример добавления 1 секунды паузы к началу стерео, частоте дискретизации 44100 Гц:
Фильтрация приведет к перекодированию, а демультиплексор concat - нет.
В anullsrc рекомендуется совмещать расположение каналов и частоту дискретизации входа.
Если вы хотите добавить тишину до конца , а не просто изменить порядок входов данных на Concat фильтр:
[1:a][0:a]concat=n=2:v=0:a=1
.Использование фильтра adelay (добавить тишину в начало)
Используйте аудиофильтр adelay, если вы хотите сделать все в одной команде или если вы хотите вывести в формате, отличном от входного (поскольку этот метод все равно перекодирует). Это работает только для добавления тишины в начало файла.
Этот пример добавит 1 секунду тишины к началу стереовхода:
1s
одну секунду.adelay=1000
, а вход 5.1adelay=1000|1000|1000|1000|1000|1000
.Использование фильтра apad (добавьте тишину до конца)
Используйте аудиофильтр apad, если вы хотите сделать все в одной команде, или если вы хотите выводить формат, отличный от входного (поскольку этот метод все равно перекодирует). Это работает только для добавления тишины в конец файла.
Этот пример добавит 1 секунду тишины в конец:
Фильтрация приведет к перекодированию, а демультиплексор concat - нет.
pad_dur
Опция была добавлена после выхода FFmpeg 4.1, так что вам нужно будет использовать свежий билд от мерзавца главного филиала или ждать FFmpeg 4.2.источник
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.
Новый синтаксис-i "aevalsrc=0|0|0|0|0|0:d=1"