Кто-нибудь из вас знает способ добавления тишины фиксированной длительности в конец MP3 в Linux? Например, используя MEncoder, FFmpeg и т. Д.?
Это должна быть командная строка, так как она будет скриптоваться и запускаться на нашем сервере.
Я гуглил это, и лучшее, что я мог сделать, это использовать pad
функцию в SoX , но это не будет работать с MP3.
Я мог бы преобразовать его в WAV, использовать SoX, затем снова преобразовать его в MP3 и скопировать метаданные (за вычетом продолжительности) из оригинала в новый MP3. Но прежде чем написать сценарий для этого, я подумал, что смогу найти решение с одним ударом.
Ответы:
Это легко сделать с помощью
pad
аргумента SoX и следующего синтаксиса:Пример:
Это молчание в секундах. (Другие применения возможны с использованием другого синтаксиса, чтобы вставить эти молчания в определенные позиции. Для получения дополнительной информации см. Документацию SoX.)
источник
С помощью ffmpeg вы можете использовать фильтр aevalsrc для генерации молчания, а затем во второй команде использовать протокол concat, чтобы объединить их без потерь:
Вы можете контролировать длительность молчания, изменяя
-t 10
любое время в секундах, которое вы предпочитаете. Конечно, вам нужно только генерировать тишину один раз, затем вы можете сохранить файл и использовать его для заполнения каждого файла, который вы хотите. Возможно, вы также захотите посмотреть дематер concat - он немного более ресурсоемкий, но вам может оказаться проще перейти в скрипт оболочки.Если вы хотите сделать это с помощью одной команды, вы можете использовать фильтр concat - для этого вам потребуется перекодировать аудио (так как с фильтрами несовместимы
-codec copy
), поэтому, возможно, вам подойдет вариант, описанный выше. Но это может быть полезно для любого, кто работает с необработанным PCM, и хочет до конца добавить тишину перед кодированием аудио:Контролируйте длительность молчания, изменяя
d=10
на любое время (в секундах), которое вы хотите. Если вы используете этот метод, вы можете найти это руководство по кодированию MP3 FFmpeg полезным.источник
ffmpeg version 0.8.4-4:0.8.4-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers built on Nov 6 2012 16:51:33 with gcc 4.6.3 *** THIS PROGRAM IS DEPRECATED *** This program is only provided for compatibility and will be removed in a future release. Please use avconv instead. Unrecognized option 'filter_complex' Failed to set value 'aevalsrc=0' for option 'filter_complex'
avconv
вместо этого - синтаксис должен быть таким же, просто заменитеffmpeg
наavconv
.