Como juntar / mesclar muitos arquivos mp3?

59

Pesquisando no Google sobre como juntar / mesclar muitos arquivos mp3, isso sugere que eu deva catjuntá-los.

Isso pode "funcionar", mas claramente não é a maneira correta de fazê-lo, pois cada cabeçalho e conjunto de tags IDv3 também serão concatenados.

Existe um programa Linux que pode ser script para juntar / mesclar muitos mp3?

O mplayer / mencoder / ffmpeg pode fazer isso?

Sandra
fonte

Respostas:

79

Isso concatenará dois arquivos mp3 e os metadados resultantes serão os do primeiro arquivo:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy output.mp3

Isso ocorre porque, para ffmpeg, toda a parte "concat:" é um único "arquivo de entrada" e seus metadados serão do primeiro arquivo concatenado. Se você deseja usar os metadados do segundo arquivo, adicione-os como um arquivo de entrada fictício e mapeie seus metadados para os da saída:

ffmpeg -i "concat:file1.mp3|file2.mp3" -i file2.mp3 -acodec copy test.mp3 -map_metadata 0:1

Se você deseja construir seus metadados a partir dos dois metadados, precisará fazê-lo manualmente. Você pode despejar os metadados de um arquivo com

ffmpeg -i file1.mp3 -f ffmetadata file1.metadata

Após despejar os dois metadados e construir novos metadados, você pode adicioná-lo ao arquivo de saída -metadatae desativar a cópia de metadados, definindo um -map_metadatamapeamento a partir de um número de arquivo de entrada negativo. Isso define um valor de nome e nenhum outro metadado:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1
Ambroz Bizjak
fonte
Para sua informação, isso requer uma certa versão do ffmpeg. Se ele diz arquivo não encontrado concat ... try modernização e executá-lo novamente
Sameer
Funciona bem no ffmpeg 0.10.4 no Gentoo. O que você está usando? Tem certeza de que não acabou de digitar o comando incorretamente?
Ambroz Bizjak 10/09/12
11
Só queria esclarecer algumas coisas para os outros: -acodecos meios que codec de áudio será utilizado e copysignifica que não só será muxing e demuxing, mas não de codificação / transcodificação (isto é muito rápido e sem perda de qualidade)
Housemd
11
Seria ótimo se houvesse um programa de interface gráfica do usuário onde eu possa arrastar e soltar vários arquivos (por exemplo, classificados cronologicamente para gravações gravadas seqüencialmente e talvez alguns arquivos editados) e, em seguida, ele produzirá um arquivo.
James Ray
11
Essa é uma boa resposta, no entanto, em quase todos os casos, o arquivo MP3 resultante possui um espaço curto (sub-segundo) entre o local em que os arquivos foram unidos. Portanto, se você estiver tentando mesclar faixas de MP3 para criar um álbum de reprodução / conjunto / o que for, isso não funciona muito bem.
The Lizard
13

Mp3Wrap - Utilitário de linha de comando que agrupa vários arquivos MP3 em um único MP3 reproduzível, sem perder nomes de arquivos ou informações de ID3 e sem recodificar. Também suporta o arquivamento de dados que não são de áudio, como listas de reprodução, arquivos de informações e imagens de capa dentro do MP3. Esses arquivos podem ser descompactados posteriormente (usando mp3splt, por exemplo); decodificadores de MP3 comuns podem reproduzir todo o fluxo de áudio como uma faixa longa.

lig
fonte
11
Obrigado por esta recomendação .. solução muito mais leve / simples do que o ffmpeg, já que eu estava combinando mais de 100 mp3 e queria a opção de dividir de volta aos originais.
Joshbaptiste
Isso não funciona mais - tente concatenar alguns arquivos e inspecione o arquivo de saída mp3val- ele reportará erros de sincronização. Isso significa que ele não será reproduzido após a primeira parte do Chrome 64+ (consulte bugs.chromium.org/p/chromium/issues/detail?id=794782 e bugs.chromium.org/p/chromium/issues/detail?id = 806601 # c10 )
Housemd 04/02
Não parece funcionar no Windows. Nenhum metadado preservado.
Gruber
9

Isso concatenará uma pasta cheia de MP3 em um único arquivo MP3:

1) Salve uma lista dos arquivos MP3 para concatenar, por exemplo,

$ cat mylist.txt
file '/tmp/01.mp3'
file '/tmp/02.mp3'
file '/tmp/03.mp3'
file '/tmp/04.mp3'
file '/tmp/05.mp3'
file '/tmp/06.mp3'
file '/tmp/07.mp3'

2) Execute o seguinte comando ( não-safe 0 é necessário se mylist.txt usar caminhos relativos ):

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3
Miles Wolbe
fonte
3

Se você deseja concatinar todos os arquivos mp3 do diretório atual:

function join_by { local IFS="$1"; shift; echo "$*"; }
files=(*.mp3)
ffmpeg -i "concat:`join_by "|" $files`" -acodec copy output.mp3
hansaplast
fonte
0

Se você precisar de scripts, provavelmente será melhor usar a solução ffmpeg. No entanto, se você precisar apenas de um aplicativo para fazer coisas assim, poderá experimentar o Audacity . É de código aberto e multiplataforma. Eu não o usei para participar de mp3s, mas usei-o para cortar seções de um mp3 e desbotá-las no final. Estou disposto a apostar que você pode participar de mp3s e cruzá-los uns com os outros também.

Brandon
fonte
4
O Audacity, tanto quanto eu sei, trabalha com os dados brutos do som e concatenar os mp3s com eles resultará em uma degradação devido à transcodificação.
23611 Ambroz Bizjak
0

zsh:

audio-join() ffmpeg -i "concat:${(j:|:)@[2,-1]}" -acodec copy $1

audio-join output.mp3 *.mp3
Cara feliz
fonte
Esperamos que as respostas incluam explicações. (Nem todas as respostas desta página são bons exemplos.)
Scott
0

Com base na resposta de Miles Wolbe, aqui está uma frase que funcionou para mim:

ls *.mp3 | \
    sed -e "s/\(.*\)/file '\1'/" | \
    ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3
Andy Balaam
fonte