だから私はffmpegを使ってflacファイルを特定のフォルダから320kビットレートでmp3に変換しています。
私はこの答えを参考にしています。
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
Windowsコマンドシェルを使用していると言いますが、最初に表示したコマンドライン(「forfile in」で始まるコマンドライン)は、Windowsのようには見えず、ある種のLinuxシェルコマンドのように見えます。 ffmpegは入力ファイルの仕様としてワイルドカードを受け入れないため、2番目のものは機能しません。
この1行のWindowsコマンドは、ffmpegを(上記のオプションを使用して)入力として受け取り、現在のフォルダー内の各flacファイルを同じフォルダー内に同じmp3ファイルを出力するように、必要に応じて実行します。拡張子の前の名前:
プロンプトで:
for %A in (*.flac) do ffmpeg -i "%~nA.flac" -c:v copy -b:a 320k "%~nA.mp3"
Mp3ファイルがすでに存在する場合、ffmpegはそれを上書きするかどうかを尋ねます。
注:上記のコマンドは、コマンドプロンプト用に作成されています。バッチスクリプトでは機能しません。そのためには、このようにすべてのパーセント記号(%)を2倍にする必要があります
バッチ(cmd)スクリプト:
for %%A in (*.flac) do ffmpeg -i "%%~nA.flac" -c:v copy -b:a 320k "%%~nA.mp3"