GNU/Linux >> Tutoriels Linux >  >> Linux

Commande Linux pour concaténer des fichiers audio et les sortir sur ogg

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

sox file1.wav file2.mp3 file3.flac outfile.ogg

Je pense que cela ne fonctionne que si les fichiers audio source ont tous le même nombre de canaux, mais je n'ai pas testé cela.

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.

ffmpeg -i infile.wma outfile.wav

Voici ma suggestion :utilisez mplayer et oggenc connecté avec un tube 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 pipe nommé pour transférer les données entre l'encodeur et le décodeur.

Mettre cela dans un script :

#!/bin/sh
# Usage: ./combine2ogg destination.ogg source1.wma source2.wma ...
# Requires: mplayer, oggenc
destination="$1"
shift
readpipe="$destination.tmpr"
writepipe="$destination.tmpw"
mkfifo "$readpipe"
mkfifo "$writepipe"
cat "$writepipe" > "$readpipe" &
mplayer -really-quiet -slave -nolirc -vc null -vo null -ao "pcm:fast:file=$writepipe" "[email protected]" &
oggenc --quiet -o "$destination" "$readpipe"
rm -f "$readpipe"
rm -f "$writepipe"

Explication :

  1. Prenez le nom du fichier de destination du premier paramètre de ligne de commande.
  2. Supprimez le premier paramètre de ligne de commande, ne laissant que les noms de fichiers source.
  3. Créez un nom pour un tube à partir duquel oggenc pourra lire.
  4. Créer un nom pour un tube dans lequel mplayer pourra écrire
  5. Créez les canaux.
  6. Utilisez cat pour vider en continu le tube d'écriture dans le tube de lecture (cela permet d'éviter les problèmes où mplayer peut se terminer, mais empêche oggenc de penser que c'est fait lorsque cela se produit)
  7. Décodez l'audio des fichiers source à l'aide de mplayer. Choix -really-quiet -slave -nolirc sont là pour désactiver les messages et faire en sorte qu'il ne lise ni le clavier ni la télécommande. Option -vc null -vo null sont là pour désactiver l'encodage et la sortie vidéo. Le -ao lui ordonne de sortir l'audio au format WAV vers le canal d'écriture nommé.
  8. Pendant que la commande précédente est en cours d'exécution, encodez simultanément depuis le tube de lecture nommé vers Ogg à l'aide de oggenc.
  9. Supprimez les canaux nommés.

Choses à gauche pour améliorer :Terminer le script plus tôt si l'une des commandes échoue (utilisez set -e ), mais toujours nettoyer correctement le fifo (piéger les signaux nécessaires).


J'utiliserais ffmpeg. Pour convertir wma en ogg vorbis, essayez :

ffmpeg -i sample.wma -acodec vorbis -aq 100 sample.ogg

ou mp3 :

ffmpeg -i input.wma -acodec libmp3lame output.mp3

vous aurez besoin de lame installé pour la conversion mp3. sudo apt-get install lame libmp3lame0

Cat, puis la conversion ne semble 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 de "copie" pour ffmpeg, mais cela ne fait pas beaucoup de différence.

Faire d'abord la conversion avec ffmpeg, puis cat *.ogg> output.ogg a fonctionné pour moi.


Linux
  1. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  2. Convertissez des fichiers audio avec cette commande Linux polyvalente

  3. Linux – Stocké dans les fichiers /dev/pts et pouvons-nous les ouvrir ?

  4. 10 exemples de commandes Linux DU (taille d'utilisation du disque de fichiers et de dossiers)

  5. Commande mcopy sous Linux

40 "Commande lsof" simple et efficace dans le système Linux

Commande Cat sous Linux :Exemples essentiels et avancés

Explication :Redirection des entrées, des sorties et des erreurs sous Linux

Commande ls sous Linux/UNIX

Commande Linux tar pour compresser et extraire des fichiers

Commande Linux SCP pour transférer des fichiers en toute sécurité