Come unire / unire molti file mp3?


59

Cercando su Google come unire / unire molti file mp3, suggerisce che dovrei semplicemente catmetterli insieme.

Ciò potrebbe "funzionare", ma chiaramente non è il modo corretto di farlo, poiché anche ogni intestazione e set di tag IDv3 saranno concatenati.

Esiste un programma Linux che può essere copiato per unire / unire molti mp3?

Può farlo mplayer / mencoder / ffmpeg?

Risposte:


79

Questo concatenerà due file mp3 e i metadati risultanti saranno quelli del primo file:

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

Questo perché, per ffmpeg, l'intera parte "concat:" è un singolo "file di input" e i suoi metadati saranno del primo file concatenato. Se si desidera utilizzare invece i metadati dal secondo file, è necessario aggiungerlo come file di input fittizio e mappare i suoi metadati a quello dell'output:

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

Se vuoi costruire i tuoi metadati dalle due metadate, dovrai farlo a mano. Puoi scaricare i metadati di un file con

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

Dopo aver scaricato entrambe le metadate e aver creato nuovi metadati, è possibile aggiungerlo al file di output -metadatae disabilitare la copia dei metadati impostando un -map_metadatamapping da un numero di file di input negativo. Questo imposta un valore per il nome e nessun altro metadata:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1

Cordiali saluti, questo richiede una certa versione di ffmpeg. Se dice che il file non è stato trovato concat ... prova ad aggiornarlo ed eseguirlo di nuovo
Sameer

Funziona bene in ffmpeg 0.10.4 in Gentoo. Che cosa stai usando? Sei sicuro di non aver appena sbagliato a digitare il comando?
Ambroz Bizjak,

1
Volevo solo chiarire alcune cose per gli altri: -acodecsignifica che verrà utilizzato il codec audio e copysignifica che ci saranno solo muxing e demuxing, ma non codifica / transcodifica (cioè molto veloce e nessuna perdita di qualità)
Housemd

1
Sarebbe bello se ci fosse un programma di interfaccia grafica in cui posso trascinare e rilasciare più file (ad esempio ordinati cronologicamente per le registrazioni registrate in sequenza, e forse alcuni file modificati) e quindi verrà emesso un file.
James Ray,

1
Questa è una buona risposta, tuttavia in quasi tutti i casi, il file MP3 risultante ha un breve spazio (sotto il secondo) tra il punto in cui i file sono stati uniti. Quindi, se stai cercando di unire le tracce MP3 per creare un album / set di riproduzione senza interruzioni / qualunque cosa, questo non funziona abbastanza bene.
The Lizard,

13

Mp3Wrap - Utilità della riga di comando che racchiude più file MP3 in un singolo MP3 riproducibile, senza perdere nomi di file o informazioni ID3 e senza ricodifica. Supporta anche l'archiviazione di dati non audio come playlist, file di informazioni e immagini di copertina all'interno dell'MP3. Questi file possono essere decompressi in un secondo momento (utilizzando mp3splt, ad esempio); i normali decodificatori MP3 possono riprodurre l'intero flusso audio come un'unica traccia lunga.


1
Grazie per questa raccomandazione .. soluzione molto più leggera / semplice di ffmpeg, dato che stavo combinando più di 100 mp3 e volevo l'opzione di dividere gli originali.
joshbaptiste,

Questa proprietà non funziona più - prova a concatenare alcuni file e controlla il file di output in mp3val- segnalerà errori di sincronizzazione. Ciò significa che non suonerà dopo il primo pezzo in Chrome 64+ (vedi bugs.chromium.org/p/chromium/issues/detail?id=794782 e bugs.chromium.org/p/chromium/issues/detail?id = 806601 # c10 )
Housemd,

Non sembra funzionare su Windows. Nessun metadata conservato.
Gruber

9

Questo concatenerà una cartella piena di MP3 in un singolo file MP3:

1) Salvare un elenco dei file MP3 da concatenare, ad es.

$ 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) Esegui il seguente comando ( non-safe 0 è richiesto se mylist.txt utilizza invece percorsi relativi ):

$ ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3

3

Se si desidera concatenare tutti i file mp3 della directory corrente:

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

0

Se hai bisogno di script, probabilmente stai meglio usando la soluzione ffmpeg. Tuttavia, se hai mai bisogno di un'applicazione per fare cose del genere, puoi provare Audacity . È open source e multipiattaforma. Non l'ho usato per unire gli mp3, ma l'ho usato per ritagliare sezioni da un mp3 e alla fine sbiadirle. Sono disposto a scommettere che puoi unirti agli mp3 e dissolverli l'uno con l'altro.


4
Audacity, per quanto ne so, lavora sui dati audio grezzi e concatenare gli mp3 con esso comporterà un degrado dovuto alla transcodifica.
Ambroz Bizjak,

0

zsh:

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

audio-join output.mp3 *.mp3

Ci aspettiamo che le risposte includano spiegazioni. (Non tutte le risposte in questa pagina sono buoni esempi.)
Scott,

0

Basato sulla risposta di Miles Wolbe, ecco un one-liner che ha funzionato per me:

ls *.mp3 | \
    sed -e "s/\(.*\)/file '\1'/" | \
    ffmpeg -protocol_whitelist 'file,pipe' -f concat -i - -c copy output.mp3
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.