• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Ändern von mp3 Dateien (im Batch)?

AngelikaM

Newbie
Hallo,

ich möchte vorhandene mp3 Dateien für meinen Mp3-Stick mit einer anderen Bitrate konvertieren. Dies möglichst im Batch bei Beibehaltung der ID-Tags. Unter WinXP habe ich dazu immer WinLame benutzt.

Mit Lame kann ich in der Konsole Dateien umkonvertieren, jedoch weiß ich nicht, wie dies bei Batchverarbeitung geht. Als Anfängerin habe ich auch noch keine Erfahrung mit Shellscripten etc.. Gibt es vielleicht auch unter Linux ein Gui für Lame?

Vielen Dank.

Gruß
Angelika
 

nobbiew

Hacker
Im großen u. ganzen geht das so

Code:
find . -iname '*.mp3' -exec lame {} {}.tmp; mv {}.tmp {} \;

Die Zeile sucht im aktuellen Verzeichnis nach alle Dateien mit der Endung .mp3 ohne Berücksichtigung der Groß- u. Kleinschreibung. Alle gefundenen Dateien (={}) werden mit lame konvertiert, wobei an die neue Datei .tmp angehängt wird. Dies ist erforderlich, da lame eine Datei nicht direkt konvertieren kann. Anschließend wird die neue Datei auf den Originalnamen verschoben. Solange die MP3´s keine ID3v2 Tags enthalten werden die Tags beibehalten.

folgendes Script tut das gleiche nur etwas überschaubarer:
Code:
for x in `find . -iname '*.mp3'`
do
lame $x $x.tmp
mv $x.tmp $x
done

Für weitere Optionen von lame schau dir mal die Manpage von lame an. Die ist sehr, sehr lang. Aber die Optionen sollten die gleichen, wie bei winlame sein.
 
OP
A

AngelikaM

Newbie
Hallo,

vielen Dank für die schnelle Antwort.

Der Script funktioniert soweit, nur scheint er bei längeren Dateinamen mit Leerschritten zu versagen. "Test01.mp3" funktioniert, "Dies ist ein Test 01.mp3" nicht.

Bei:
Code:
find . -iname '*.mp3' -exec lame {} {}.tmp; mv {}.tmp {} \;

erscheint folgende Fehlermeldung:
Code:
find: Fehlendes Argument für "-exec".
mv: Beim Verschieben mehrerer Dateien muss das letzte Argument ein Verzeichnis sein.
»mv --help« gibt weitere Informationen.

Gruß
Angelika
 

nobbiew

Hacker
Sorry, das hab ich nicht berücksichtigt. Aber das passiert mir immer wieder, wenn ich solche Zeilen aus dem stehgreif baue.

Versuchs damit
Code:
find . -iname '*.mp3' -exec lame "{}" "{}.tmp"; mv "{}.tmp" "{}" \;

Druch die Anführungzeichen wird der Shell mitgeteilt, dass es sich hier nicht um mehrere Parameter handelt.
 

xlephant

Newbie
@nobbiew
hmm leider funktioniert es bei mir nicht.

ich bekomme immer folgende fehler meldung (die gleiche wie angelika):

Code:
find: Fehlendes Argument für "-exec".
mv: Beim Verschieben mehrerer Dateien muss das letzte Argument ein Verzeichnis sein.
,,mv --help" gibt weitere Informationen.


hast du vielleicht noch ne idee? oder sonst noch wer?
DANKE!
 

nobbiew

Hacker
Dann probier doch mal folgendes
Code:
find . -type f -iname '*.mp3' -exec lame "{}" "{}.tmp"; mv "{}.tmp" "{}" \;
Damit verhinderst du dass er die Aktionen auf Verzeichnisse macht, die auf .mp3 enden.
 

tat2

Newbie
Moin nobbiew,

also beim letzten script kommt bei mir immer noch die gleiche Fehlermeldung, die xlephant oben beschrieben hat. :cry:
 

nobbiew

Hacker
OK dann nimm den

Code:
find . -type f -iname '*.mp3' -exec lame "{}" "{}.tmp" \; -exec mv "{}.tmp" "{}" \;
 

tat2

Newbie
Moin nobbiew,

zuerst mal vielen vielen Dank. Das Script funktioniert einwandfrei. Aber gibt es ein Script mit dem man MP3´s aus nur einem Ordner in eine andere Bitrate umzuwandeln ? ! ? Mit dem Script, das jetzt läuft, werden ja alle MP3´s aus meinem /home Verzeichnis umgewandelt.

Am besten wäre, wenn ich in der Konsole bis in den Ordner gehe wo die zu konvertierenden MP3 liegen, Script eingeben und dann sind irgendwann die Dateien in dem Ordner fertig.
 
Oben