Una muitos arquivos MP3, OGG e FLAC em um WAV ou FLAC

6

Eu tenho 33 arquivos de áudio, cada um com cerca de 11 segundos de duração, e gostaria de mesclá-los em um arquivo sem perdas. Como posso fazer isso de forma eficiente (ou seja, sem recortar no Audacity 33 vezes)?

    
por Fraxtil 01.08.2010 / 00:18

5 respostas

5

Você pode fazer isso com ffmpeg e sox :

for i in *.mp3 *.ogg *.flac
do
  ffmpeg -i "$i" "$i.wav"
done

sox *.wav combined.wav
    
por 01.08.2010 / 00:20
7

Supondo que você queira mesclá-los em ordem alfabética, por nome de arquivo:

for f in ./*.{ogg,flac,mp3}; do echo "file '$f'" >> inputs.txt; done
ffmpeg -f concat -i inputs.txt output.wav

O loop para coloca todos os nomes de arquivos em um arquivo chamado inputs.txt, um por linha, e o segundo usa O concat do ffmpeg demuxer para mesclar os arquivos. É possível usar printf em vez do loop da seguinte forma:

printf "file '%s'\n" ./*.{ogg,flac,mp3} > inputs.txt

Assumindo um shell moderno, você também pode usar a substituição de comandos para fazer tudo em uma única linha.

ffmpeg -f concat -i <(printf "file '%s'\n" ./*.{ogg,flac,mp3}) output.wav
    
por 17.04.2013 / 17:21
1

Se você começar apenas com arquivos sem perdas, use shntool :

shntool join *.flac
    
por 14.10.2012 / 15:20
1

Parece que o Sound Juicer que acompanha o Ubuntu grava arquivos FLAC quebrados, o que resulta em nenhuma assinatura MD5 no arquivo. FAÇA UMA CÓPIA do diretório que contém os arquivos que você deseja concatenar e, em seguida, execute o script abaixo. echo fixing broken FLAC files
find . -type f|grep .flac$ |while read file
do
flac -f --decode "$file" -o temp.wav
flac -f -8 temp.wav -o "$file"
done
rm temp.wav

Em seguida, execute o shntool join *.flac como acima.

    
por 31.12.2013 / 07:44
0

No entanto, esteja ciente de que a junção shntool irá insistir em juntá-los na ordem de ordenação (alfabética), mesmo que você os especifique de outra forma.

shntool join fileB.flac fileA.flac

colocará A antes de B.

Você pode renomear os arquivos primeiro ou usar o parâmetro -r ("-r ask" solicitará o pedido).

Francamente eu acho isso irritante ...

Além disso, você pode forçar o modo de saída, por isso, se estiver ingressando nos FLACs:

shntool join *.flac -o flac

resultará em joined.flac em vez de joined.wav

    
por 29.03.2015 / 23:04