Script zur Umwandlung von WAV-Dateien in MPGs
Hallo Liste, hat jemand zufällig einen Script für die bash um ca 200 wav-Dateien auf der Festplatte auf mpeg zu wandeln? Vielen Dank im voraus Rolf-Hubert
Hi, On Wed, Mar 19, 2003 at 12:57:17PM +0100, Rolf-Hubert Pobloth wrote:
hat jemand zufällig einen Script für die bash um ca 200 wav-Dateien auf der Festplatte auf mpeg zu wandeln?
Wenn die WAV Dateien alle in einem Verzeichnis sind dann kannst das mit einem Einzeiler in der bash lösen. LAME solltest aber halt installiert haben :) # untested... for each in *.wav ; do lame -h -b 196 $each ; done # ...Ende Gruss Daniel -- "Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one." --Thomas Jefferson
On Mit, 19 Mär 2003 at 13:05 (+0100), Daniel Lord wrote:
Hi,
On Wed, Mar 19, 2003 at 12:57:17PM +0100, Rolf-Hubert Pobloth wrote:
hat jemand zufällig einen Script für die bash um ca 200 wav-Dateien auf der Festplatte auf mpeg zu wandeln?
Wenn die WAV Dateien alle in einem Verzeichnis sind dann kannst das mit einem Einzeiler in der bash lösen. LAME solltest aber halt installiert haben :)
# untested...
for each in *.wav ; do lame -h -b 196 $each ; done
# ...Ende
... und mit find (beliebige Verzeichnisstruktur): <ungetestet> find /wav_dir -type f -name '*.wav' -exec lame \-h \-b 196 {} \; </ungetestet> Jan
Am Mittwoch, 19. März 2003 13:05 schrieb Daniel Lord: Hallo,
Wenn die WAV Dateien alle in einem Verzeichnis sind dann kannst das mit einem Einzeiler in der bash lösen. LAME solltest aber halt installiert haben :)
# untested...
for each in *.wav ; do lame -h -b 196 $each ; done
# ...Ende
Ist es dann nicht aber so, dass lame die Endung .mp3 and den originalen Dateinamen xyz.wav noch anhängt? -> xyz.wav.mp3 Ich habe auch kürzlich so eine Aktion gemacht, bin aber auf keinen grünen Zweig gekommen, das ".wav" loszuwerden. Kann das vielleicht jemand nachschießen? Gruß Stefan
Hallo Stefan Am Mittwoch, 19. März 2003 23:12 schrieb Stefan Schlörholz:
Am Mittwoch, 19. März 2003 13:05 schrieb Daniel Lord: Hallo,
Wenn die WAV Dateien alle in einem Verzeichnis sind dann kannst das mit einem Einzeiler in der bash lösen. LAME solltest aber halt installiert haben :)
# untested...
for each in *.wav ; do lame -h -b 196 $each ; done
# ...Ende
Ist es dann nicht aber so, dass lame die Endung .mp3 and den originalen Dateinamen xyz.wav noch anhängt? -> xyz.wav.mp3
Ich habe auch kürzlich so eine Aktion gemacht, bin aber auf keinen grünen Zweig gekommen, das ".wav" loszuwerden.
Kann das vielleicht jemand nachschießen?
Gruß
Stefan
bei mir geht das ganz gut: for j in *.wav; do echo $j; lame -b 160 $j ${j/.wav/.mp3}; rm $j; done Viel Spass noch beim encoden. Sven
Hi, On Wed, Mar 19, 2003 at 11:12:02PM +0100, Stefan Schlörholz wrote:
Am Mittwoch, 19. März 2003 13:05 schrieb Daniel Lord:
Wenn die WAV Dateien alle in einem Verzeichnis sind dann kannst das mit einem Einzeiler in der bash lösen. LAME solltest aber halt installiert haben :)
# untested...
for each in *.wav ; do lame -h -b 196 $each ; done
# ...Ende
Ist es dann nicht aber so, dass lame die Endung .mp3 and den originalen Dateinamen xyz.wav noch anhängt? -> xyz.wav.mp3
Ich habe auch kürzlich so eine Aktion gemacht, bin aber auf keinen grünen Zweig gekommen, das ".wav" loszuwerden.
Kann das vielleicht jemand nachschießen?
jetzt packe ich das aber nicht mehr in eine Zeile :) ;-----untested--------- #!/bin/bash for each in *.wav; do OUTPUT=`echo $each | sed 's/.wav/.mp3/g'` echo "$each wird nach $OUTPUT konvertiert" lame -h -b 196 $each $OUTPUT done ;-----untested--------- wer das immernoch in einer Zeile haben will darf das natürlich auch gerne tun. Dann kann er auch den Umweg über die OUTPUT Variable gleich weglassen. Wenn das ganze rekursiv sein soll dann mein for each in... durch das zuvorgenannte find Kommando ersetzen. Viel Spass damit. Gruss Daniel -- "Those who desire to give up Freedom in order to gain Security, will not have, nor do they deserve, either one." --Thomas Jefferson
On Mit, 19 Mär 2003 at 23:31 (+0100), Daniel Lord wrote: [...]
;-----untested--------- #!/bin/bash
for each in *.wav; do OUTPUT=`echo $each | sed 's/.wav/.mp3/g'` echo "$each wird nach $OUTPUT konvertiert" lame -h -b 196 $each $OUTPUT done ;-----untested---------
wer das immernoch in einer Zeile haben will darf das natürlich auch gerne tun. Dann kann er auch den Umweg über die OUTPUT Variable gleich weglassen. Wenn das ganze rekursiv sein soll dann mein for each in... durch das zuvorgenannte find Kommando ersetzen.
... oder einen Einzeiler benutzen (also alles in eine Zeile): <ungetestet> find /wav_base -name '*.wav' -printf "lame -h -b 196 %p %h/\`basename %p .wav\`.mp3\n" | sh </ungetestet> Zum Testen am besten den Teil *| sh* weglassen, dann kriegt man eine Ausgabe der Kommandos, die ausgeführt werden würden. Jan
On Don, 20 Mär 2003 at 01:01 (+0100), Jan Trippler" wrote: Das Thema ist zwar schon ein paar Tage durch, aber mir ist beim Mailbox-Aufräumen noch was aufgefallen (nur fürs Protokoll):
On Mit, 19 Mär 2003 at 23:31 (+0100), Daniel Lord wrote: [...]
;-----untested--------- #!/bin/bash
for each in *.wav; do OUTPUT=`echo $each | sed 's/.wav/.mp3/g'` [...]
Dieser sed ist höllisch gefährlich: <schnipp> jan@k500:~/tmp> echo "abc wav xyz.wav ..wav" | sed 's/.wav/.mp3/g' abc.mp3 xyz.mp3 ..mp3 jan@k500:~/tmp> echo "new wave.wav" | sed 's/.wav/.mp3/g' new.mp3e.mp3 <schnapp> 2 Fallen: Der Punkt repräsentiert ein beliebiges Zeichen - nicht nur den Punkt. Die /g Option sorgt dafür, dass _jedes_ Aufkommen des Suchmusters ersetzt wird. BTW: Das kann bei der o. g. Konstruktion nicht passieren, weil nur Dateien mit der Endung .wav bearbeitet werden, aber man sollte es im Auge behalten: Das Suchmuster .wav wird auch dann ersetzt, wenn es gar nicht die Dateiendung bildet, weil es nicht nur auf das Ende des Dateinamens passt. Folgendes sed-Argument sollte sicherer sein: <schnipp> jan@k500:~/tmp> echo "abc wav xyz.wav ..wav" | sed 's/\.wav$/\.mp3/' abc wav xyz.wav ..mp3 jan@k500:~/tmp> echo "new wave.wav" | sed 's/\.wav$/\.mp3/' new wave.mp3 jan@k500:~/tmp> echo "new wave.mp3" | sed 's/\.wav$/\.mp3/' new wave.mp3 <schnapp> Jan
Uups, klarer Fall von übereifrigem Copy und Paste. for j in *.wav; do echo $j; lame -b 160 $j ${j/.wav/.mp3}; rm $j; done ^^^^^^ das rm $j; sollte da natürlich nur stehen, wenn die wav-Dateien nicht mehr gebraucht werden. Hoffe, dass ich da keinen schaden angerichtet habe... Und im Dateinamen sollten möglichst keine Leerzeichen vorkommen - kostet eh nur Platz ;) Bis denn Sven
Hallo, On Wed, 19 Mar 2003, Stefan Schlörholz wrote:
Ich habe auch kürzlich so eine Aktion gemacht, bin aber auf keinen grünen Zweig gekommen, das ".wav" loszuwerden.
Kann das vielleicht jemand nachschießen?
mmv "*.wav.mp3" "#1.mp3" Oder meintest du direkt beim encoden? Da muss ich passen, ich kenn nur die 'notlame' Implementation... -dnh -- 129: Knigge Kofler des erfolgreichen Kommunizierens (Heinrich Konrad Bartels)
Am Mittwoch, 19. März 2003 12:57 schrieb Rolf-Hubert Pobloth:
hat jemand zufällig einen Script für die bash um ca 200 wav-Dateien auf der Festplatte auf mpeg zu wandeln? Vielen Dank im voraus
Mit einem bisschen Glück hast du sowas schon: less $(which mlame)[1] Daraus machst du dann ein mlame *wav und fertig. Wenn du die Dateien über mehrere Verzeichnisse verstreut hast, musst du das ggf. mit find kombinieren. Martin [1] Falls das nicht funktioniert solltest du das Paket lame installieren. -- when in danger or in doubt, run in circles, scream and shout! pgp-key: via wwwkeys.de.pgp.net, key id is 0x21eec9b0
participants (7)
-
Daniel Lord
-
David Haller
-
Jan.Trippler@t-online.de
-
Martin Borchert
-
Rolf-Hubert Pobloth
-
Stefan Schlörholz
-
sven reinhardt