Więc używam ffmpeg do konwersji plików flac z określonego folderu do formatu mp3 przy szybkości transmisji bitów wynoszącej 320k.
Używam tej odpowiedzi jako odniesienia.
https://stackoverflow.com/a/41096234/9259505
Tak więc polecenie, którego używam w powłoce poleceń systemu Windows to
ffmpeg -i infile.flac -c:v copy -b:a 320k outfile.mp3
ale to tylko jedna piosenka. Jak zmodyfikować to polecenie, aby cyklicznie przeglądać wszystkie pliki .flac w folderze katalogu roboczego?
Sam próbowałem tych 2, ale one nie działają.
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
Uwaga: używam kopii -c: v, ponieważ okładki albumów są transkodowane, co powoduje, że plik jest znacznie większy, którego staram się przede wszystkim unikać. Więc polecenie musi skopiować strumienie.
System operacyjny: Windows 10
Odpowiedzi:
Mówisz, że używasz powłoki poleceń systemu Windows, ale pierwszy pokazany wiersz poleceń (ten, który zaczyna się „dla pliku w”) nie wygląda jak Windows, a bardziej jak jakieś polecenie powłoki Linuxa. Drugi nie zadziała, ponieważ ffmpeg nie zaakceptuje znaku wieloznacznego jako specyfikacji pliku wejściowego.
To jedno wierszowe polecenie systemu Windows robi to, co chcesz, aby ffmpeg (używając powyższych opcji) pobierał jako dane wejściowe z kolei każdy plik flac w bieżącym folderze i wyprowadzał, w tym samym folderze, plik mp3 z tym samym nazwa przed rozszerzeniem:
W odpowiedzi:
Jeśli plik mp3 już istnieje, ffmpeg zapyta, czy chcesz go zastąpić.
Uwaga: powyższe polecenie jest spreparowane dla wiersza poleceń. Nie będzie działać w skrypcie wsadowym. W tym celu należy podwoić wszystkie znaki procentu (%) w ten sposób
W skrypcie wsadowym (cmd):
źródło