С помощью ffmpeg вы можете использовать фильтр aevalsrc для генерации тишины, а затем во второй команде использовать протокол concat, чтобы объединить их без потерь:
ffmpeg -filter_complex aevalsrc=0 -t 10 10SecSilence.mp3
ffmpeg -i "concat:input.mp3|10SecSilence.mp3" -c copy output.mp3
Вы можете контролировать длительность молчания, изменяя -t 10
на любое время в секундах, которое вы предпочитаете. Конечно, вам нужно только генерировать тишину один раз, затем вы можете сохранить файл и использовать его для заполнения каждого файла, который вы хотите. Возможно, вы также захотите найти демультиплексор concat - он немного более ресурсоемкий, но вам может оказаться проще перейти в скрипт оболочки.
Если вы хотите сделать это с помощью одной команды, вы можете использовать фильтр concat - для этого вам потребуется перекодировать аудио (так как графы фильтров несовместимы с -codec copy
), поэтому, возможно, для вас лучше подойдет описанная выше опция. Но это может быть полезно для любого, кто работает с необработанным PCM, желая до конца добавить тишину перед кодированием аудио:
ffmpeg -i input.mp3 \
-filter_complex 'aevalsrc=0::d=10[silence];[0:a][silence]concat=n=2:v=0:a=1[out]' \
-map [out] -c:a libmp3lame -q:a 2 output.mp3
Контролируйте продолжительность тишины, изменяя d=10
на любое время (в секундах), которое вы хотите. Если вы используете этот метод, вы можете найти это руководство по кодированию MP3 FFmpeg полезным.