De quels outils de ligne de commande ai-je besoin pour concaténer plusieurs fichiers audio et les sortir en un seul ogg (et / ou mp3)?
Si vous pouvez fournir la commande complète pour concaténer et sortir vers ogg, ce serait génial.
Modifier : les fichiers d'entrée (dans mon cas, actuellement) sont au wma
format, mais idéalement, ils devraient être suffisamment flexibles pour prendre en charge un large éventail de formats populaires.
Edit2 : Juste pour clarifier, je ne veux pas fusionner tous les wma
s dans un certain répertoire, je veux juste concaténer 2 ou 3 fichiers en un seul.
Merci pour les solutions proposées, mais elles semblent toutes nécessiter la création de fichiers temporaires, si possible, j'aimerais éviter cela.
linux
command-line
audio
hasen
la source
la source
mktemp -d /tmp/descriptive_name.XXXXXX
à créer un répertoire temporaire avec un nom informatif, puis à y traiter tous mes fichiers temporaires, puis rm -r le répertoire temporaire par la suite.*.wma
dans une ligne de commande, fonctionnera certainement pour une liste plus petite comme1.wma 2.wma 3.wma 4.wma
(en laissant de côté 5.wma, 6.wma et 7.wma), simplement en les listant comme ça (au lieu d'utiliser*.wma
).Réponses:
Voici ma suggestion: utilisez mplayer et oggenc connectés avec un canal nommé.
Utilisez
mplayer
pour décoder l'audio. Il peut lire une grande variété de formats audio (et vidéo), et il peut également lire plusieurs fichiers.Utilisez
oggenc
pour encoder l'audio en Ogg Vorbis.Pour éliminer le besoin d'un fichier temporaire, utilisez un canal nommé pour transférer les données entre l'encodeur et le décodeur.
Mettre cela dans un script:
Expliqué:
-really-quiet -slave -nolirc
sont là pour désactiver les messages et pour ne pas lire le clavier ou la télécommande. Les options-vc null -vo null
sont là pour désactiver l'encodage et la sortie vidéo. L'-ao
option lui demande de sortir l'audio au format WAV vers le canal d'écriture nommé.Truc à gauche pour améliorer: Terminer le script plus tôt si l'une des commandes échoue (utiliser
set -e
), mais toujours nettoyer correctement le fifo (piéger les signaux nécessaires).la source
SoX peut gérer un grand nombre de formats audio, selon les bibliothèques avec lesquelles il est compilé, et peut concaténer des fichiers avec une simple ligne de commande
Je crois que cela ne fonctionne que si les fichiers audio source ont tous le même nombre de canaux, mais je ne l'ai pas testé.
Pour autant que je sache, SoX n'a aucun support pour les fichiers .wma, donc convertir au moins ces fichiers avec quelque chose comme ffmpeg en premier est probablement inévitable.
la source
J'utiliserais ffmpeg . Pour convertir wma en ogg vorbis, essayez:
ou mp3:
vous aurez besoin de lame installé pour la conversion mp3.
sudo apt-get install lame libmp3lame0
Cat, puis convertir ne semblent pas bien fonctionner, bien que vous puissiez trouver de nombreuses références sur le Web disant que vous pouvez faire quelque chose comme
cat *.wma | ffmpeg -i - -acodec ...
- cela ne fonctionne pas sur ma machine - seul le premier fichier est traité. Il existe un codec «copie» pour ffmpeg, mais cela ne fait pas beaucoup de différence.Faire la conversion avec ffmpeg d'abord, puis cat * .ogg> output.ogg a fonctionné pour moi.
la source
-acodec libvorbis
pour éviter l'encodeur intégré de ffmpeg.Pour concaténer et transcoder des fichiers audio, voici le workflow que vous souhaitez suivre:
Le traitement de ces étapes effectue la concaténation des données WAV, qui est la plus facile à gérer et la moins destructrice. Et puisque vous voulez quand même transcoder, vous devrez décoder en WAV quelque part dans le processus; pourrait aussi bien en profiter.
Voici les étapes que je recommande. Nous utiliserons
ffmpeg
pour le décodage,sox
pour la concaténation etoggenc
pour l'encodage. Vous pouvez substituer d'autres outils à n'importe quelle étape -mencoder
et d'autres fonctionnent bien comme décodeur, et tout outil qui code Ogg peut être utilisé comme encodeur - bien que je pense que vous aurez du mal à trouver un meilleur outil quesox
pour le enchaînement.find *.wma -exec ffmpeg -i {} outfile.{}.wav \;
(cela s'exécute
ffmpeg -i infile.wma outfile.infile.wma
sur chaque fichier WMA dans le répertoire courant)sox outfile* all.wav
(la note
outfile
est le même préfixe que nous avons donné aux fichiers de sortie à l'étape 1)oggenc all.wav all.ogg
vous voulez probablement des paramètres de qualité ici, mais cela donnera des valeurs par défaut de qualité décentes. Je n'ai pas obtenu les résultats que j'aimaisffmpeg
, mais vous pouvez le préférer, j'ai donc inclus un exemple avec ffmpeg ci-dessous.Notez que la
sox
commande ne fonctionnera pas correctement sauf si tous les fichiers WAV sont au même format - si certains sont à 22 kHz et certains à 44,1 kHz, par exemple, vous devez les identifiersox
via des commutateurs de ligne de commande et spécifier le format dans lequel vous souhaitez Je ne connais aucun outil de ligne de commande aussi performant quesox
pour l'étape de concaténation. Vous pouvez éventuellement produire un format PCM brut à l'étape 1 et l'utilisercat
pour l'étape 2, mais cela ne fonctionnera que s'ils sont au même format, et vous devrez être extrêmement spécifique à la fois à votre décodeur et à votre encodeur quant à ce que format qu'ils devraient attendre.Encodage avec ffmpeg: Beaucoup de publications autour du net se plaignent que l'encodeur Vorbis intégré de ffmpeg n'est pas très bon. Si votre version est construite avec le support de libvorbis, utilisez
-acodec libvorbis
plutôt. Exemple de ligne de commande:la source
Ne fonctionnera pas pour les fichiers .ogg, mais mp3wrap peut concaténer plusieurs fichiers .mp3 en un seul fichier. Donc, à partir de la ligne de commande, vous pouvez faire quelque chose comme ça
Cela utilisera ffmpeg pour convertir tous vos fichiers .wma en .mp3, puis fusionnera tous les fichiers .mp3 en un seul fichier.
la source
Mencoder peut concaténer et transcoder des vidéos sans fichiers temporaires ( exemple trivial ici ). Il y a un script flottant quelque part appelé aconvert qui incite mencoder à faire de l'audio uniquement (ce qu'il refuse normalement de faire). Ces deux éléments combinés semblent répondre à vos besoins.
Edit: j'ai trouvé aconvert.sh. Malheureusement, il n'est conçu que pour convertir un fichier audio. Mais voici le code de toute façon, au cas où quelqu'un voudrait l'utiliser pour créer une ligne de commande qui convertit plusieurs fichiers audio.
la source
Ce n'est peut-être pas exactement ce dont vous avez besoin, mais cela devrait aider http://bitzenbytes.com/index.php?name=PNphpBB2&file=viewtopic&t=6538&postdays=0&postorder=asc&sid=f87b364ddbae3ddd9417f5d10fae870c
la source
Je pensais que je jetterais ma réponse. Ce n'est probablement pas la manière la plus élégante, mais elle a fait ce que je voulais.
Étape 1: Convertir en ogg (utilisations
mplayer
,pacpl
etruby
, tous disponibles à partir des prises en pension libre Debian I).Étape 2: concaténation des fichiers OGG
la source
cat file list… | ffmpeg -f mp3 -i – -acodec copy outfile.mp3
a bien fonctionné pour moi avec les MP3: j'imagine que cela fonctionnerait aussi avec d'autres formats. Les crédits vont à Lindylex .la source