Personal tools
You are here: Home Documentation Comment convertir plusieurs fichiers audio ogg en mp3
Document Actions

Comment convertir plusieurs fichiers audio ogg en mp3

by Thierry Bénita last modified 11-03-2007 17:13

Comment convertir plusieurs fichiers audio ogg en mp3 en ligne de commandes.

Ouiiiiiiiiiii, je sais, mp3 c'est propriétaire, mais comme mon lecteur
ne veut rien lire d'autre...

Une ligne de bash pour transformer tous les .ogg d'un dossier en mp3

Exécuter la commande suivante dans une consule Bash :

ls -b *.ogg |while read i ; do echo $i && oggdec "$i"
&& lame -b160 "$( echo $i | sed 's/ogg$/wav/g' )" "$(echo $i |
sed 's/ogg$/mp3/g' )" ; done

Créer un script pour créer une commande qui transforme tous les .ogg d'un dossier en mp3

On peut avoir souvent besoin d'effectuer cette conversion, pour le bien-être de son baladeur préféré.

Voici ce que donnerait la ligne suivante, ré-écrite sur plusieurs lignes, dans un fichier de commandes.

Le fichier s'appelle dans notre cas ogg2mp3 ; on le crée dasn /usr/local/bin/ et on l'autorise à être exécuté  :

#!/bin/bash
#fichier ogg2mp3
# convertit les ogg en mp3 dans le dossier courant
# a copier dans /usr/local/bin
# chmod 755 /usr/local/bin/ogg2mp3

ls -b *.ogg |while read i
    do echo "conversion de $i en mp3"
        oggdec "$i"
        lame -b160 "$( echo $i | sed 's/ogg$/wav/g' )" "$(echo $i | sed 's/ogg$/mp3/g' )"
        rm -- "$( echo $i | sed 's/ogg$/wav/g' )"
    done


Ci-dessous les commentaires :

ls -b *.ogg : liste les fichiers ogg ; l'option -b permet de prendre en comptes les espaces et autres caractères spéciaux en ajoutant un '\'

on passe le résultat à la boucle while.

'read' permet de lire le flux résultant, ligne par ligne (la boucle 'for' lirait mot par mot, en coupant sur chaque espace !!)

echo $i : ligne de contrôle pour nous indiquer le fichier qui va être traité

oggdec : dépend directement du paquet vorbis-tools, pour décoder en wav par exemple ;)
lame : l'option -b permet de définir le débit du flux mp3 résultant. La compression par défaut est 128kbps sur ma distribution. Tu devrais faire des tests car en fonction de la compression des .ogg en entrée, il est inutile de laisser trop de qualité au mp3. un -b128 devrait donner des résultats satisfaisants tout en produisant des fichiers moins volumineux.

$( COMMANDES ) : les COMMANDES sont exécutées dans les parenthèses, et le résultat remplace le bloc $( COMMANDES ). Il est ainsi possible de calculer dynamiquement le nom de fichier.

echo $i
: affiche le contenu de la variable $i (le fichier ogg)
sed 's/ogg$/wav/g' : sed permet d'exécuter une expression régulière sur un flux de données texte. Ici, il s'agit de remplacer la chaine ogg en fin de ligne (le $) par wav

idem pour calculer le nom du fichier mp3.

rm -- "$( echo $i | sed 's/ogg$/wav/g' )" : l'option -- de rm permet de lui passer en nom de fichier des noms qu'on demande explicitement de ne pas interpréter. Par exemple rm -- --help permet de supprimer un fichier dont le nom est "--help". Le nom de fichier est calculé comme ci-dessus. Il est entre guillemets pour ne pas avoir de problème avec les espaces.

La version en ligne de commandes ne supprime pas les .wav ; c'est facile à ajouter ;)


Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: