Sox FAIL-Formate: Eingabedatei '* .wav' kann nicht geöffnet werden: Ungültiges Argument

4628
Jota

Ich versuche mich mit sox vertraut zu machen, um einige Audiobearbeitungsaufgaben zu erledigen. Letztendlich möchte ich alle meine WAV-Dateien nehmen und nur einen Kanal extrahieren und speichern, idealerweise mit einem geänderten Namen (z. B. würde der Eingang 55_55.wav zu left_55_55.wav werden). Richtig, jetzt versuche ich nur ein paar grundlegende Dinge und stoße auf Probleme.

Wenn Sie beispielsweise die Dauer einer einzigen Datei betrachten, funktioniert das einwandfrei:

sox --i -D 55_55.wav 10.840000 

Der Versuch, den Befehl für alle WAV-Dateien im Verzeichnis auszuführen, klappt jedoch nicht:

sox --i -D *.wav sox FAIL formats: can't open input file '*.wav': Invalid argument 

Was läuft hier falsch?

Ich habe mehrere Variationen ausprobiert (zB ./*.wavden relativen Standort geändert *.wav), konnte es aber nicht lösen. Ich hoffe, ich kann herausfinden, wie ich mit jeder .wav-Datei etwas anfangen kann, um mein Ziel zu erreichen, und es scheint, als wäre die Verwendung *.wavfür die Eingabe der richtige Ansatz, aber es funktioniert nicht so gut. Irgendwelche Gedanken?

Ich dachte, so etwas wie die folgende Lüge würde klappen, einen Kanal aus jeder Datei zu extrahieren und diesen Kanal mit einem veränderten Namen zu speichern, aber es scheint, dass ich etwas zu hoffnungsvoll war:

sox *.wav -c 1 left*.wav remix 1 0 sox FAIL formats: can't open output file `left*.wav`: Invalid argument 
0
`sox --i -D * .wav` funktioniert hier, sind Sie im richtigen Verzeichnis? Was sagt echo * .wav? Thor vor 10 Jahren 0
Um den linken Kanal aus mehreren Dateien zu extrahieren und separat zu speichern, müssen Sie eine Schleife verwenden, z. B. `for wavfile in * .wav; tun Sie sox "$ wavfile" "left_ $ wavfile" remix 1; fertig ". Thor vor 10 Jahren 1
Ich bin mir ziemlich sicher, dass ich im richtigen Verzeichnis bin. ls gibt alle Dateien zurück, die ich erwarte, ich kann den Befehl für einzelne Dateien verwenden und der Text vor `> ist das richtige Verzeichnis. Jota vor 10 Jahren 0
Ihr Problem ist also, dass "* .wav" nicht erweitert wird. In welcher Shell führen Sie dies aus? Versuchen Sie, die Schleife in einer Bash-Shell auszuführen. Thor vor 10 Jahren 0
Tut mir leid, ich war unter dem Missverständnis, dass Sie dies in einer anderen Shell laufen ließen. `cmd.exe` unterstützt auch for-loops, siehe zum Beispiel [diese Website] (http://www.robvanderwoude.com/for.php). So etwas sollte funktionieren: `Für% wavfile in (* .wav) mach sox% wavfile left_% wavfile remix 1 '. Thor vor 10 Jahren 1

0 Antworten auf die Frage