Comment joindre / fusionner plusieurs fichiers mp3?

59

En recherchant sur Google comment joindre / fusionner de nombreux fichiers mp3, cela suggère que je devrais les juste catensemble.

Cela pourrait "fonctionner", mais ce n'est clairement pas la bonne façon de le faire, car chaque en-tête et chaque jeu de balises IDv3 seront également concaténés.

Existe-t-il un programme Linux pouvant être scripté pour joindre / fusionner plusieurs mp3?

Mplayer / mencoder / ffmpeg peut-il le faire?

Sandra
la source

Réponses:

79

Cela concaténera deux fichiers mp3 et les métadonnées résultantes seront celles du premier fichier:

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

En effet, pour ffmpeg, la partie "concat:" entière est un "fichier d'entrée" unique et ses métadonnées seront du premier fichier concaténé. Si vous souhaitez utiliser les métadonnées du deuxième fichier à la place, vous devez l'ajouter en tant que fichier d'entrée factice et mapper ses métadonnées sur celles de la sortie:

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

Si vous voulez construire vos métadonnées à partir des deux métadonnées, vous devrez le faire à la main. Vous pouvez vider les métadonnées d'un fichier avec

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

Après avoir vidé les deux métadonnées et créé de nouvelles métadonnées, vous pouvez les ajouter au fichier de sortie avec -metadata, et vous pouvez désactiver la copie de métadonnées en définissant un -map_metadatamappage à partir d'un numéro de fichier d'entrée négatif. Ceci définit une valeur de nom et aucune autre métadonnée:

ffmpeg -i "concat:file1.mp3|file2.mp3" -acodec copy -metadata "title=Some Song" test.mp3 -map_metadata 0:-1
Ambroz Bizjak
la source
Pour votre information, cela nécessite une certaine version de ffmpeg. Si le fichier ne contient pas de fichier concat ... essayez de le mettre à niveau et de le réexécuter
Sameer
Fonctionne bien dans ffmpeg 0.10.4 dans Gentoo. Qu'est-ce que vous utilisez? Êtes-vous sûr de ne pas avoir mal saisi la commande?
Ambroz Bizjak
1
Je voulais juste clarifier quelques points pour les autres: cela -acodecsignifie que le codec audio sera utilisé et copyqu’il n’y aura que le multiplexage et le démultiplexage, mais pas l’encodage / le transcodage (c’est-à-dire très rapidement et sans perte de qualité)
Housemd
1
Ce serait formidable s'il existait un programme d'interface graphique dans lequel je pouvais glisser et déposer plusieurs fichiers (par exemple, triés chronologiquement pour les enregistrements enregistrés de manière séquentielle, et peut-être certains fichiers édités). Un fichier serait alors généré.
James Ray
1
C'est une bonne réponse, cependant, dans presque tous les cas, le fichier MP3 résultant a un court intervalle (inférieur à une seconde) entre l'endroit où les fichiers ont été joints. Donc, si vous essayez de fusionner des pistes MP3 pour créer un album / set / tout ce que vous souhaitez lire, cela ne fonctionnera pas correctement.
Le lézard
13

Mp3Wrap - Utilitaire de ligne de commande permettant de regrouper plusieurs fichiers MP3 dans un seul fichier MP3 pouvant être lu , sans perte de noms de fichiers ni d'informations ID3, et sans réencodage. Prend également en charge l’archivage des données non audio telles que les listes de lecture, les fichiers d’information et les images de couverture au sein du MP3. Ces fichiers peuvent être décompressés plus tard (en utilisant mp3splt, par exemple); Les décodeurs MP3 ordinaires peuvent lire l'intégralité du flux audio sous la forme d'une longue piste.

lig
la source
1
Merci pour cette recommandation .. solution beaucoup plus légère / plus simple que ffmpeg, car je combinais plus de 100 mp3 et souhaitais avoir la possibilité de revenir aux originaux.
joshbaptiste
Cette propriété ne fonctionne plus - essayez de concaténer quelques fichiers et inspectez le fichier de sortie mp3val- des erreurs de synchronisation seront signalées. Cela signifie qu'il ne jouera pas après le premier bloc dans Chrome 64+ (voir bugs.chromium.org/p/chromium/issues/detail?id=794782 et bugs.chromium.org/p/chromium/issues/detail?id = 806601 # c10 )
Housemd
Ne semble pas fonctionner sous Windows. Aucune métadonnée préservée.
Gruber
9

Cela concaténera un dossier contenant de nombreux fichiers MP3 dans un seul fichier MP3:

1) Enregistrez une liste des fichiers MP3 à concaténer, par exemple,

$ 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) Exécutez la commande suivante ( -safe 0n'est pas requise si mylist.txt utilise des chemins relatifs ):

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

Si vous voulez concattre tous les fichiers mp3 du répertoire actuel:

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

Si vous avez besoin de scripts, vous feriez probablement mieux d'utiliser la solution ffmpeg. Cependant, si vous avez juste besoin d'une application pour faire ce genre de choses, vous pouvez essayer Audacity . C'est open source et multi-plateforme. Je ne l'ai pas utilisé pour joindre des mp3, mais je l'ai utilisé pour rogner des sections d'un mp3 et les masquer à la fin. Je suis prêt à parier que vous pouvez rejoindre des mp3 et les fondre en fondu l'un avec l'autre également.

Brandon
la source
4
Autant que je sache, Audacity travaille sur les données audio brutes, et la concaténation de fichiers MP3 avec celle-ci entraînera une dégradation due au transcodage.
Ambroz Bizjak
0

zsh:

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

audio-join output.mp3 *.mp3
Mine réjouie
la source
Nous nous attendons à ce que les réponses incluent des explications. (Toutes les réponses sur cette page ne sont pas de bons exemples.)
Scott
0

Basé sur la réponse de Miles Wolbe, voici un one-line qui a fonctionné pour moi:

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