Repete o arquivo de áudio para um determinado comprimento

2

Atualmente estou enfrentando um problema em que preciso tirar um arquivo mp3 e criar outro arquivo mp3 onde o primeiro esteja tocando por um determinado período de tempo, em loop, se necessário. De preferência, estou procurando uma solução de linha de comando. Tentei ffmpeg e sox, mas não consegui encontrar uma solução com eles. Então agora estou procurando algumas opções.

Uma explicação adicional: Vamos dizer que eu tenho um arquivo foo.mp3, eu preciso criar um arquivo bar.mp3 que tenha um determinado tamanho, digamos 30 segundos e que contenha o arquivo foo.mp3, e se foo.mp3 for menor que 30 segundos, ele será colocado em loop tantas vezes que preenche os 30 segundos inteiros. Espero que agora esteja claro o que estou pedindo.

    
por Tomcatus 04.10.2014 / 19:43

1 resposta

4

O ffmpeg pode fazer isso por você, mas você pode precisar de duas etapas

Opcional Etapa 1: encontre o comprimento do arquivo original

ffmpeg -i '/path/to/original.mp3' 2>&1 | grep 'Duration :'

Agora você pode calcular o número de repetições necessárias. Como alternativa, você pode usar apenas um número "seguro" de repetições, pois muitas não vão doer.

Etapa 2: faça o loop do arquivo e corte-o no comprimento necessário

crie "concat.txt" com este conteúdo

file '/path/to/original.mp3'
file '/path/to/original.mp3'
...
file '/path/to/original.mp3'
file '/path/to/original.mp3'
file '/path/to/original.mp3'

Deve haver pelo menos tantas linhas quanto as repetições necessárias, mas, novamente, mais não vão doer, então você pode usar uma contagem de linhas seguras (muito alta)

E execute o ffmpeg (supondo que você queira 123.456 segundos):

ffmpeg -t 123.456 -f concat -i concat.txt -c copy -t 123.456 output.mp3
    
por 04.10.2014 / 20:07