使用ffmpeg进行批量转换

时间:2016-11-11 21:44:50

标签: batch-file audio ffmpeg

我正在制作一个带有ffmpeg的Windows批处理脚本,可以将音频文件转换为多种格式。

我希望音频在这里以两种格式转换。 32kbps和40kbps。

Setlocal EnableDelayedExpansion
for %%a in ("*.*") do ffmpeg -i "%%a" -b:a 32000 "%%~na - mp3@32kbps.mp3" 
for %%a in ("*.*") do ffmpeg -i "%%a" -b:a 40000 "%%~na - mp3@40kbps.mp3"
pause

然而,似乎我得到三个输出。

声音 - mp3@32kbps.mp3

声音 - mp3 @ 40kbps-mp3

声音 - mp3 @ 32kbps - mp3@40kbps.mp3

我知道我必须在这里做错事,因为我只想要两个文件。为什么我为什么要在这里获得第三种格式(声音mp3 @ 32kbps - mp3@40kbps.mp3 ),我该如何避免这种情况?

这是我正在使用的更新代码:

@echo off
for %%a in (*.*) do (   

    ffmpeg -i "%%a" -b:a 32000 -ar 44100 "%%~na - [16-bit 44,100kHz - 32kbps].mp3" 
)
pause

1 个答案:

答案 0 :(得分:3)

第二个for循环还处理从1st开始的新生成的mp3。 最好只使用一个:

Setlocal EnableDelayedExpansion
for %%a in (*.*) do (   
  ffmpeg -i "%%a" -b:a 32000 "%%~na - mp3@32kbps.mp3" 
  ffmpeg -i "%%a" -b:a 40000 "%%~na - mp3@40kbps.mp3"
)
pause