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.
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
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
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
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
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
@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.
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
@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ì. 🙂
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
@Silian87: caspita! Questo script è veramente completo, complimenti.
Grande Silian87! Il tuo script è completissimo!