web-dev-qa-db-ja.com

FFMPEGを使用してFLACをMP3に変換しますか?

だから私は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

1
Desmond Smith

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"
4
Michael Harvey