Algum de vocês conhece uma maneira de adicionar silêncio de duração fixa ao final de um MP3, no Linux? Por exemplo, usando MEncoder, FFmpeg, etc?
Ele precisa ser de linha de comando, pois será script e executado em nosso servidor.
Eu pesquisei sobre isso e o melhor que pude fazer é usar a pad
função no SoX , mas isso não funcionará com MP3s.
Eu poderia convertê-lo para WAV, usar SoX, convertê-lo novamente para MP3 e copiar os metadados (menos a duração) do original para o novo MP3. Mas, antes de escrever um script, pensei em ver se há uma solução de um clique.
Respostas:
Você pode fazer isso facilmente com o
pad
argumento do SoX e a seguinte sintaxe:Exemplo:
Esses silêncios estão em segundos. (Outros usos são possíveis usando uma sintaxe diferente, para inserir esses silêncios em posições específicas. Consulte a documentação do SoX para obter mais informações.)
fonte
Com o ffmpeg, você pode usar o filtro aevalsrc para gerar silêncio e, em um segundo comando, usar o protocolo concat para combiná-los sem perdas:
Você pode controlar a duração do silêncio alterando
-t 10
para o tempo que desejar em segundos. Obviamente, você só precisa gerar o silêncio uma vez, para manter o arquivo por perto e usá-lo para preencher cada um dos arquivos que desejar. Você também pode procurar o desmuxador concat - é um pouco mais demorado do processador, mas pode ser mais fácil inserir um script de shell.Se você quiser fazer isso em um único comando, poderá usar o filtro concat - isso exigirá que você recodifique o áudio (como as imagens de filtro são incompatíveis
-codec copy
), portanto a opção acima provavelmente será a melhor para você. Mas isso pode ser útil para quem trabalha com PCM bruto, procurando adicionar silêncio ao final antes de codificar o áudio:Controle a duração do silêncio, alterando
d=10
para o tempo que você quiser (em segundos). Se você usar esse método, poderá encontrar este guia de codificação MP3 FFmpeg útil.fonte
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
- a sintaxe deve ser a mesma, basta substituirffmpeg
poravconv
.