Я пытаюсь ознакомиться с sox для выполнения некоторых задач обработки аудио. В конечном счете, я хочу взять все мои WAV-файлы и извлечь только один канал и сохранить их, в идеале с измененным именем (например, input 55_55.wav станет left_55_55.wav). Хорошо, сейчас, хотя я просто пробую некоторые базовые вещи и сталкиваюсь с проблемами.
Например, просмотр продолжительности всего одного файла работает нормально:
sox --i -D 55_55.wav
10.840000
Но попытка выполнить команду для всех файлов .wav в каталоге не удалась:
sox --i -D *.wav
sox FAIL formats: can't open input file '*.wav': Invalid argument
Что здесь не так?
Я пробовал несколько вариантов (например, ./*.wav
и изменение относительного местоположения *.wav
), но не смог решить его. Я надеюсь выяснить, как сделать что-то с каждым файлом .wav для достижения моей цели, и кажется, что использование *.wav
для ввода может быть правильным подходом, но это не так хорошо работает. есть идеи?
Я думал, что что-то вроде следующей лжи сработает, чтобы извлечь один канал из каждого файла и сохранить этот один канал с измененным именем, но, похоже, я был слишком обнадеживающим:
sox *.wav -c 1 left*.wav remix 1 0
sox FAIL formats: can't open output file `left*.wav`: Invalid argument
for wavfile in *.wav; do sox "$wavfile" "left_$wavfile" remix 1; done
.
ls
возвращает все файлы, которые я ожидаю, я могу использовать команду для отдельных файлов, и текст перед >
является правильным каталогом.
*.wav
не расширяется, в какой оболочке вы запускаете это? Попробуйте запустить цикл в оболочке bash.
cmd.exe
также поддерживает for-loop, см., например, этот веб-сайт . Как то так должно работать for %wavfile in (*.wav) do sox %wavfile left_%wavfile remix 1
.
sox --i -D *.wav
работает здесь, вы в правильном каталоге? Что говорит эхо * .wav?