Konvertieren von WAV in MP3 mit LAME und Automator

7

Ich möchte viele WAV-Dateien mit LAME und Automator in MP3-Dateien konvertieren. Ich benötige ein Skript, mit dem ich mit der rechten Maustaste auf einen Ordner klicken und alle WAV-Dateien im Ordner in MP3-Dateien konvertieren kann. Ich konnte ein Skript zum Konvertieren einer einzelnen Datei finden, weiß aber nicht, wie ich es ändern soll, damit ich viele Dateien mit einem einzigen Klick konvertieren kann.

Ich habe ein Skript verwendet, das ich hier für einzelne Dateien gefunden habe. Hier ist eine ähnliche Frage, aber anstatt "Run Applescript" zu verwenden, wird "Run Shell Script" verwendet. Ich habe versucht, LAME-Parameter zwischen "do" und "done" zu ersetzen, aber es ist mir nicht gelungen, etwas zu konvertieren.

Wie kann ich also einen Ordner voller WAV-Dateien in MP3-Dateien konvertieren? Für mich spielt es keine Rolle, ob Applescript oder Shell Script in Automator verwendet werden, wenn beide Möglichkeiten möglich sind.

nqw1
quelle
Wenn Sie nicht darauf bestehen, LAME zu verwenden, sind Dougs Applescripts für iTunes eine nützliche Quelle. dougscripts.com/itunes
Dies geht .flac -> .mp3 fügt also einen Schritt hinzu, aber die Idee ist die gleiche. Es könnte leicht modifiziert werden, um mit .wav anstelle von .flac umzugehen. Es ist im Terminal erledigt. Ich benutze es täglich.
Boehj
Ich habe diese Applescripts auf iTunes überprüft und sie sind großartig, aber ich möchte das neueste LAME verwenden, um meine WAV-Dateien zu konvertieren. Trotzdem danke für deine Hilfe!
nqw1
Ich weiß, dass dies Ihre Frage nicht beantwortet, aber konnten Sie Switch nicht verwenden ?
Daviesgeek
@daviesgeek - Ich empfehle die Verwendung dieser App nicht.
l'L'l

Antworten:

4

Der Automator "hängt" leider beim Versuch, den LAME-Encoder zu verwenden. Es ist auch nicht effizient oder ratsam, einen Multithread-Prozess als Automator-Service zu verwenden. Für Aufgaben wie diese ist es am besten, entweder ein einfaches Skript auszuführen oder eine alternative Methode zu verwenden.

Das folgende Skript codiert in 3 Sekunden eine 20-MB-WAV in MP3 ! (bei höchsten Qualitätseinstellungen)

file="$1"

find . -name '*.wav' -maxdepth 1 -exec /usr/local/bin/lame -V 0 -q 0 '{}' \;

for file in *.mp3
do
  mv "$file" "${file/wav./}"
done

Zum Installieren, Herunterladen und Öffnen des Terminals:

sudo install encode-mp3 /usr/local/bin

Navigieren Sie zur Verwendung in einen gewünschten Konvertierungsordner und geben Sie Folgendes ein:

encode-mp3

Dadurch werden Ihre WAV-Dateien in MP3 codiert

Konvertieren Sie .wav in .mp3 | LAME Encoder Shell Script [md5: 72d4e24f14ea9139136900f2c4281a7f]


[Original]

Ich habe gerade einen Einzeiler geschrieben, der dies für Sie in Terminal erledigt. Legen Sie einfach eine CD in das Verzeichnis der Dateien, die Sie konvertieren und eingeben möchten:

find ./ -name "*.wav" -execdir lame -V 3 -q 0 {} \;
l'L'l
quelle
Danke dafür! Es hat perfekt funktioniert. Ich möchte Terminal jedoch nicht jedes Mal öffnen, wenn ich Dateien konvertiere. Ist es möglich, dies in Automator zu verwenden? Ich möchte einfach mit der rechten Maustaste auf einen Ordner klicken, um darin enthaltene Dateien zu konvertieren. Ich habe versucht, es als Shell-Skript zu verwenden, aber ich habe es nicht zum Laufen gebracht.
nqw1
Sichere Sache! Es sieht so aus, als hättest du es mit Automator zum Laufen gebracht, seit ich das letzte Mal hier war. Ich bin froh, dass mein Einzeiler dazu beigetragen hat, das zu erreichen, was Sie wollten. Hoffentlich kann es auch jemand anderem helfen.
l'L'l
Ich habe es immer noch nicht geschafft, es auf Automator zum Laufen zu bringen. Ich habe viele Dinge ausprobiert, die aus der anderen Antwort abgelesen werden können. Wenn Sie weitere Vorschläge haben, helfen Sie uns
gerne
Ich habe eine Automator-Version für Sie erstellt. Ich habe es so eingerichtet, dass Strg + Maus Wenn Sie auf einen ORDNER klicken, wird Dienste> .wav in .mp3 konvertieren angezeigt, wodurch der gesamte Ordner konvertiert wird. Lassen Sie mich wissen, ob mein Workflow Ihr Problem löst.
l'L'l
Vielen Dank für Ihre Hilfe, aber ich habe das gleiche Problem wie in der anderen Antwort. Ich habe einen Ordner, der 3 WAV-Dateien mit den Namen 01.wav, 02.wav und 03.wav enthält. Ich benutze das Skript für den Ordner und es beginnt die Dateien zu konvertieren. Es wird nur eine unvollendete MP3-Datei mit einer Länge von ca. 30 Sekunden erstellt, und der Dienst wird weiterhin im Hintergrund ausgeführt. Danach passiert nichts mehr. Ich muss den Dienst manuell herunterfahren. Ich habe Ihr Skript heruntergeladen und keine Anpassungen vorgenommen. Ich habe auch versucht, mit der rechten Maustaste auf Dateien zu klicken und das Skript zu verwenden, aber es hat nicht funktioniert. Irgendeine Idee, wo das Problem liegen könnte? :)
nqw1
4

In der Aktion "Shell-Skript ausführen" von Automator können Sie Folgendes verwenden (ändern Sie "Eingabe übergeben" in "Als Argumente"):

find "$1" -name "*.wav" -execdir /usr/local/bin/lame -V 0 -q 0 {} \;

Dadurch werden alle WAV-Dateien im ausgewählten Ordner einschließlich der Unterordner gefunden (und alle Nicht-WAV-Dateien übersprungen). Wenn Sie nicht möchten, dass es in Unterordnern angezeigt wird, können Sie Folgendes ändern:

find "$1" -name "*.wav" -maxdepth 1 -execdir /usr/local/bin/lame -V 0 -q 0 {} \;

Natürlich würden Sie -V 0 -q 0zu den lameOptionen wechseln , die Sie bevorzugen.

Wenn Sie benachrichtigt werden möchten, wenn dies erledigt ist, können Sie einen sayBefehl hinzufügen, eine Aktion "Growl-Benachrichtigung anzeigen" (wenn Sie Growl installiert haben) oder einen beepBefehl in einer Aktion "AppleScript ausführen" verwenden.

Unten sehen Sie einen Screenshot davon, wie mein Workflow mit dem zusätzlichen sayBefehl und der Growl-Benachrichtigung aussieht . Beachten Sie auch, dass ich die Option "Dienst erhält ausgewählt" oben in "Ordner" geändert habe (standardmäßig "Text").

Lahme Konvertierung von WAV in MP3-Stapel

joelseph
quelle
Danke für deine Hilfe! Ich konnte es aber nicht zum Laufen bringen. Ich denke, ich sollte nur die Grenze zwischen "do" und "done" in diesem Shell-Skript, oder? Alles was ich bekomme ist eine 21 Sekunden MP3 Datei und eine Endlosschleife oder so. Ich denke, ich mache etwas falsch :) Ich habe daran gedacht, "Eingabe übergeben" in "als Argumente" zu ändern.
nqw1
@ nqw1 Mit dem findBefehl, müssen Sie nicht die verwenden for, dooder doneBefehle überhaupt nicht . Diese Befehle bilden eine Schleifenanweisung, um jede Datei im Ordner zu verarbeiten. Der findBefehl liefert ähnliche Ergebnisse, wird jedoch nur lamefür Dateien mit der Erweiterung .wav ausgeführt. Ich werde die Antwort bearbeiten und einen Screenshot von Automator hinzufügen.
Joelseph
Danke für deine freundliche Hilfe! Das wird komisch, weil ich alles genau wie in Ihrem Screenshot habe, aber immer noch nur eine unvollendete ~ 20 Sekunden MP3-Datei erstellt und der Dienst in einer Endlosschleife bleibt oder so. Ich muss es manuell herunterfahren und dann erscheint die Growl-Meldung. Ich habe sogar den Ordnerpfad / usr / local / bin überprüft und es gibt eine lahme Datei. Haben Sie eine Idee, was das Problem sein könnte?
nqw1
Wenn Sie die Antwort von ioi im selben Ordner versuchen , bleibt sie in derselben Datei hängen ? In diesem Fall ist diese Datei möglicherweise beschädigt. Eine andere Möglichkeit kann sein, dass Sie nur mehr Zeit für die Fertigstellung benötigen. Auf meinem 2,5-GHz-Core-2-Duo mit 4 GB RAM dauert ein 5-minütiger Song etwa 15 Sekunden. Obwohl ich nicht denke, dass es einen Unterschied machen sollte, kann es erwähnenswert sein, dass ich diesen Automator-Workflow nur mit lame 3.98.4 getestet habe, das in Lion installiert ist.
Joelseph
Die Antwort von ioi funktioniert perfekt. Ich kann die gleichen WAV-Dateien in ~ 10 Sekunden konvertieren. Ich verwende auch die Version 3.98.4 LAME, habe aber OS X 10.6.8 Snow Leopard. Ich denke, das sollte keinen Unterschied machen? Ich denke, das Problem muss irgendwo in Automator liegen, wenn ich LAME in Terminal verwenden kann. Meine Automator-Version ist 2.1.1 (247.1).
nqw1
3

Der Thread ist etwas aktualisiert, aber für diejenigen, die ihn nützlich finden könnten,

Ich habe das hier beschriebene Automator-Setup verwendet und konnte vermeiden, dass es mit der -S-Option von lame hängen bleibt. Mein Befehl "Shell-Skript ausführen" sieht also folgendermaßen aus:

    find "$1" -name "*.wav" -maxdepth 1 -execdir /usr/bin/lame -b 160 -q 0 -S {} \;

(Außerdem ist mein lahmer Manager an einem anderen Ort)

Die Option -S deaktiviert den Lames-Fortschrittsbericht

Oleg
quelle