Поэтому я использую ffmpeg для преобразования файлов flac из определенной папки в mp3 с битрейтом 320k.

Я использую этот ответ в качестве ссылки.

https://stackoverflow.com/a/41096234/9259505

Итак, команда, которую я использую в командной оболочке Windows:

ffmpeg  -i infile.flac  -c:v copy  -b:a 320k  outfile.mp3

но это только для одной песни. Как я могу изменить эту команду для циклического перебора всех файлов .flac в папке рабочего каталога?

Я сам попробовал эти 2, но они не работают.

for file in 'C:\Users\...' *.flac; do ffmpeg -i "$file" -c:v copy -q:a 0 "${file%.flac}".mp3; done

ffmpeg  -i "*.flac"  -c:v copy  -q:a 0  outfile.mp3

Примечание: я использую копию -c: v, потому что обложка альбома в итоге транскодируется, в результате чего получается гораздо больший файл, который я пытаюсь избежать в первую очередь. Таким образом, команда должна копировать потоки.

Операционная система: Windows 10

1 ответ1

1

Вы говорите, что используете командную оболочку Windows, но первая показанная вами командная строка (та, которая начинается "для файла в") не похожа на Windows, скорее на какую-то команду оболочки Linux. Второй не будет работать, потому что ffmpeg не примет подстановочный знак в качестве спецификации входного файла.

Эта однострочная команда Windows делает то, что вы, похоже, хотите, чтобы ffmpeg (используя указанные выше параметры) принимал в качестве входных данных, в свою очередь, каждый файл flac в текущей папке и выводил в той же папке mp3-файл с тем же имя перед расширением:

По подсказке:

for %A in (*.flac) do ffmpeg  -i "%~nA.flac"  -c:v copy  -b:a 320k  "%~nA.mp3"

Если mp3-файл уже существует, ffmpeg спросит, хотите ли вы перезаписать его.

Примечание: приведенная выше команда создается для командной строки. Это не будет работать в пакетном скрипте. Для этого вам нужно удвоить все знаки процента (%), как это

В пакетном (cmd) скрипте:

for %%A in (*.flac) do ffmpeg  -i "%%~nA.flac"  -c:v copy  -b:a 320k  "%%~nA.mp3"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .