С помощью 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 полезным.