Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
mp32wav

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Sonstiges
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sascha+Müller
Gast





BeitragVerfasst am: 14. Aug 2002 16:10   Titel: mp32wav

Hallo!

Ich habe eine ganze Reihe von MP3s, die ich allesamt ins WAV-Format umwandeln möchte.

Erste Wahl zum Umwandeln von Sounddateien ist natürlich SoX, das allerdings kein MP3 kennt. Also habe ich es mit folgendem kleinen Skript versucht:
code:
mpg123 -b 10000 -s "$1" | sox -t raw -s -w -r 44100 -c2 - "$2"


Das klappt leider nicht so, wie ich es mir vorgestellt habe. Vermutlich liegt es daran, dass MPG123 nur reine RAW-Daten rausgibt, und die eben keine Information über Sampling-Frequenz, Mono/Stereo, etc. enthalten. Einige der MP3s werden korrekt umgewandelt, wenn ich das -c2 weglasse, andere nicht.

Hat da jemand einen Tipp für mich?
 

Lippi
Gast





BeitragVerfasst am: 14. Aug 2002 21:42   Titel: Re: mp32wav

Hi Sascha,

#!/bin/sh
for file in *.mp3
do
mpg123 -w "$file.wav" "$file"
done

funktoniert bei mir einwandfrei.

Gruß Lippi
 

Sascha Müller
Gast





BeitragVerfasst am: 15. Aug 2002 14:52   Titel: Re: mp32wav

Ja, aber wieso einfach wenn es auch kompliziert geht

Im Ernst: Danke für den Tipp!

BTW: Sollte es nicht eher heissen:
code:
mpg123 -w "${file%mp3}wav" "$file"
 

malfi
Gast





BeitragVerfasst am: 18. Aug 2002 14:27   Titel: Re: mp32wav

Ein bisserl konfigurabler...

#!/bin/bash
echo " ##### mp3 to wav #####"
case $# in
0) echo "Usage: mp32wav <file> <file> <file>...."
echo ' mp32wav "*bla*.mp3" "[foo]*bar.mp3"...'
echo "Note: The quotationsmarks are needed for globbing!"
;;
*)
for i in $*; do
tgt=$(echo "$i" | sed -e s/\.mp3/\.wav/)
echo "# Converting $i to $tgt"
mpg123 -q -v -w "$tgt" "$i"
echo " DONE"
done
;;
esac
 

TuX
Gast





BeitragVerfasst am: 18. Aug 2002 14:47   Titel: Re: mp32wav

wie wäre es mit folgender kleiner Anpassung:
code:

#!/bin/bash

#
# erst mal festlegen wo unsere Binaries liegen...
#
BIN_BASENAME="/usr/bin/basename"
BIN_MPG123="/usr/bin/mpg123"
BIN_SED="/usr/bin/sed"


echo " ##### mp3 to wav #####"

case $# in
0) echo "Usage: mp32wav <file> <file> <file>...."
echo ' mp32wav "*bla*.mp3" "[foo]*bar.mp3"...'
echo "Note: The quotationsmarks are needed for globbing!"
;;
*) for INPUTFILE in $*; do
#
# "basename Dateiname Dateiendung" verwenden um die Dateiendung zu entfernen
# anschliessend mit SED alle Spaces im Dateinamen eliminieren (stoeren unter UNIX eh nur)
#
TARGET=$(echo "$(${BIN_BASENAME} "${INPUTFILE}" .mp3).wav" | ${BIN_SED} -e "/ \+/_/g")
echo "# Converting $i to ${TARGET}"
${BIN_MPG123} -q -v -w "${TARGET}" "${INPUTFILE}"
echo " DONE"
done
;;
esac

 

Malfi
Gast





BeitragVerfasst am: 18. Aug 2002 15:20   Titel: Re: mp32wav

Hast' recht. Bei meiner Version könnte man u.U. Dateien schrotten, wenn sie nicht den Suffix 'mp3' haben, weil dann bei mpg123 target=sourcefile ist. (Kann aber auch sein, dass mpg123 das abfaengt, habs nicht getestet.)

Man sollte vielleicht noch in Betracht ziehen, ein Ziel-Verzeichnis anzugeben, wohin die wav's sollen. Entweder als Argument (dann wirds 'kompliziert') oder als Config-Variable...

bye Malfi
 

Jochen
Gast





BeitragVerfasst am: 19. Aug 2002 7:48   Titel: Re: mp32wav

Kleiner Bugfix: Die Zeile
 *) for INPUTFILE in $*; do
sollte entweder
 *) for INPUTFILE ; do
oder aber
 *) for INPUTFILE in "$@" ; do
lauten, sonst bekommst Du Schwierigkeiten bei Dateien mit Leerzeichen. Bei Verwendung von $* bricht die Shell die Dateiliste noch mal nach Whitespace auf, so dass bei einer Datei 'Artist Titel.mp3' die Schleife 2mal laufen würde, einmal mit INPUTFILE gleich "Artist" und einmal gleich "Titel.mp3".

Jochen
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Sonstiges Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy