Convertire da OGG a MP3
Per convertire un gruppo di file da formato OGG a MP3 ecco un semplice shell script (che ho chiamato ogg2mp3.sh):
#!/bin/bash
LAMEOPTS='-b 192 -q 2'
for f in $*; do
sox $f u.wav
lame $LAMEOPTS u.wav ${f/\.ogg/.mp3}
rm -f u.wav
done
Esempio d’uso:
cd dove-stanno-un-sacco-di-ogg sh qualche-dir/ogg2mp3.sh *.ogg
Al termine dell’esecuzione, accanto ad ogni .ogg troverete il corrispondente .mp3.

8 Aprile 2007 alle 21:49
ciao, ho provato il tuo scritp
ma quello che segue e’ il messaggio
di errore:
root@terra:/home/melo/musica/Casadei/Le_canzoni,_la_storia__disc_1_ # _ogg2mp3.sh *.ogg
sox: Can’t open input file ‘01′: No such file or directory
Could not find “u.wav”.
/usr/sbin/_ogg2mp3.sh: line 4: 16431 Segmentation fault sox $f u.wav
Could not find “u.wav”.
sox: Can’t open input file ‘Ciao_mare.ogg’: No such file or directory
Could not find “u.wav”.
sox: Can’t open input file ‘02′: No such file or directory
Could not find “u.wav”.
/usr/sbin/_ogg2mp3.sh: line 4: 16440 Segmentation fault sox $f u.wav
melo
8 Aprile 2007 alle 21:54
ah il problema sorge quando il titolo del brano ha degli spazi vuoti.. per cui
viene spezzato e ovviamente non riconosciuto..
es: ‘nella vecchia fattoria’ diventa:
nella
vecchia
fattoria
..melo
8 Aprile 2007 alle 22:05
risolto il problema:
basta quotare $* quindi lo script diventerebbe il seguente:
#!/bin/bash
LAMEOPTS=’-b 192 -q 2′
for f in “$*”; do
sox $f u.wav
lame $LAMEOPTS u.wav ${f/.ogg/.mp3}
rm -f u.wav
done
grazie ancora, melo
8 Aprile 2007 alle 22:18
gh…. piccola rettifica:
#!/bin/bash
LAMEOPTS=’-b 192 -q 2′
for f in $*; do
sox $f u.wav
lame $LAMEOPTS u.wav “$f”.mp3
rm -f u.wav
done
8 Aprile 2007 alle 22:35
aarghhh!! scusare di nuovo..
rettifico di nuovo:
———————————————-
#!/bin/bash
LAMEOPTS=’-b 192 -q 2′
for f in *.ogg; do
echo $f
sox “$f” u.wav
lame $LAMEOPTS u.wav “${f/.ogg/.mp3}”
rm -f u.wav
done
————————————————————————————-
melo
9 Aprile 2007 alle 21:43
@melo: grazie del lavoro di debug dello script, hai fatto un buon lavoro.
Purtroppo lo script ha almeno un altro difetto: i tag definiti negli ogg vengono persi nella conversione. Per questo motivo e per altri, io ora uso e consiglio SoundConverter. Provalo.
6 Maggio 2007 alle 18:56
Il fascino dello script e’ nettamente superiore a qualsiasi applicazione grafica per gnome! (e viva pure Gentoo Linux).
Propongo un’ulteriore modifica, che prevede l’uso di ‘oggdec’ al posto di ’sox’ e un bitrate variabile nella conversione:
#!/bin/bash
#LAMEOPTS=”-b 192 -q 2″
LAMEOPTS=”-V 2 –vbr-new”
for f in $*; do
oggdec -o tmp.wav $f
lame $LAMEOPTS tmp.wav ${f/.ogg/.mp3}
rm -f tmp.wav
done
6 Maggio 2007 alle 21:13
@karovls: concordo con te sul fascino degli script, ma dopo troppi anni di script mi sono impigrito ed ora preferisco le finestre, il mouse, tutte quelle cose lì.
20 Maggio 2007 alle 23:35
Salv e.
VIsto che uso amarok e sono uno fissato con i tag, me ne sono fatto una versione mia. Se ne avete bisogno eccola qua, funziona benone!
#!/bin/bash
# Software relased under the terms of GNU/GPL2
# Copyright Silian Della Ragione 2007
#
# Dependences: lame oggdec id3tag
# Usage: ogg2mp3.sh file1.ogg file2.ogg
# ogg2mp3.sh *.ogg
#
# Set mp3 bitrate here:
MP3RATE=”160″
LAMEOPTS=”-b $MP3RATE -q 2″
TMP=”/tmp/tmp.wav”
for f in *.ogg; do
echo “Converting $f…”
ARTISTA=”`ogginfo “$f” | grep artist | cut -d \= -f 2`”
ALBUM=”`ogginfo “$f” | grep album | cut -d \= -f 2`”
TITOLO=”`ogginfo “$f” | grep title | cut -d \= -f 2`”
TRACK=”`ogginfo “$f” | grep tracknumber | cut -d \= -f 2`”
YEAR=”`ogginfo “$f” | grep date | cut -d \= -f 2`”
ID3TAGS=( -a”$ARTISTA” -A”$ALBUM” -s”$TITOLO” -t”$TRACK” -y”$YEAR” )
oggdec -o $TMP “$f”
lame $LAMEOPTS $TMP “${f/.ogg/.mp3}”
nf=`echo “$f” | sed -e s/.ogg/.mp3/`
id3tag “${ID3TAGS[@]}” “$nf”
rm -f $TMP
done
21 Maggio 2007 alle 16:29
@Silian87: caspita! Questo script è veramente completo, complimenti.