ffmpeg | 批量转换 | 制作相同的文件名

foh*_*ums 12 batch conversion

我将如何使用 ffmpeg 创建批量转换文件for sample rate conversion,例如:

$ ffmpeg -i *.wav -ar 22050 *.wav

请注意,我只是在进行采样率转换,但最后我想将所有 *.wav 文件批量转换为 22050 *.wav 文件,同时为所有转换的文件保留相同的文件名。

Jet*_*Jet 9

FFMpeg 不能在读取同一个文件时写入,因为它会导致错误。
唯一的方法是转换成另一个文件并替换原始文件。
或者您可以将其转换为另一个文件夹并替换原始文件夹,这更容易。


对于 Windows:

mkdir outdir
for %i in (*.bmp) do (
ffmpeg -i %i -ar 22050 outdir\%i
)
Run Code Online (Sandbox Code Playgroud)

注意:将 %i 放入 Windows 批处理文件时,请将 %i 替换为 %%i。

对于 Linux:

mkdir outdir
for i in *.wav; do
  ffmpeg -i $i -ar 22050 outdir/$i;
done
Run Code Online (Sandbox Code Playgroud)

现在只需将您的目录替换为 outdir。


对于您的情况:
如果您想要 Counter Strike:GO 或 HLDJ,请看这里。HL 需要更多设置,
音频必须是单声道(-ac 1在 FFMpeg 中添加标志)和 16 位(添加-acodec pcm_s16le)。
因此,您的 FFMpeg 命令(在 Linux 上)将如下所示:

mkdir outdir
for i in *.wav; do
  ffmpeg -i $i -acodec pcm_s16le -ac 1 -ar 22050 outdir/$i;
done
Run Code Online (Sandbox Code Playgroud)