使用 FFMPEG 将 FLAC 转换为 MP3?

Des*_*ith 5 audio mp3 flac ffmpeg

所以我使用 ffmpeg 将 flac 文件从某个文件夹转换为 320k 比特率的 mp3。

我正在使用这个答案作为参考。

/sf/answers/2876736411/

所以我在 Windows 命令 shell 中使用的命令是

ffmpeg  -i infile.flac  -c:v copy  -b:a 320k  outfile.mp3
Run Code Online (Sandbox Code Playgroud)

但这只是一首歌。如何修改该命令以循环浏览工作目录文件夹中的所有 .flac 文件?

我自己试过这两个,但它们不起作用。

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
Run Code Online (Sandbox Code Playgroud)

注意:我正在使用 -c:v 副本,因为专辑插图最终会被转码,从而产生一个更大的文件,我首先试图避免这种情况。所以命令必须复制流。

操作系统:Windows 10

Mic*_*vey 10

您说您使用的是 Windows 命令 shell,但是您显示的第一个命令行(以“for file in”开头的命令行)看起来不像 Windows,更像是某种 Linux shell 命令。第二个不起作用,因为 ffmpeg 不接受通配符作为输入文件规范。

这一行 Windows 命令执行您似乎想要的操作,使 ffmpeg(使用上面的选项)作为其输入,依次将当前文件夹中的每个 flac 文件和输出,在同一文件夹中,具有相同的 mp3 文件扩展名前的名称:

在提示时:

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

如果 mp3 文件已经存在,ffmpeg 会询问您是否要覆盖它。

注意:上面的命令是为命令提示符设计的。它不适用于批处理脚本。为此,您需要像这样将所有百分号 (%) 加倍

在批处理(cmd)脚本中:

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