如何使用FFmpeg批量转换文件夹中的所有MP3文件
如何使用FFmpeg批量转换文件夹中的所有MP3文件
嘿,很高兴看到你的压缩效果这么棒!要批量处理整个文件夹里的MP3,其实只需要给你的FFmpeg命令套个循环就行,我给你分不同系统的方案,你按需选:
一、Linux/macOS 用Shell脚本处理
1. 保留原文件,转换后存到新文件夹(推荐,安全不丢原文件)
先创建一个存放转换后文件的文件夹,然后逐个处理每个MP3:
# 先创建目标文件夹,-p参数确保文件夹不存在时自动创建 mkdir -p converted_mp3s # 循环遍历当前文件夹下所有MP3文件 for file in *.mp3; do # 对每个文件执行转换,输出文件名加前缀方便区分 ffmpeg -i "$file" -ac 1 -ab 8000 -ar 22050 "converted_mp3s/BR_8k-SR_22050_$file" done
执行完后,所有压缩好的MP3都会在converted_mp3s文件夹里,原文件完全不受影响。
2. 直接覆盖原文件(谨慎操作!转换失败可能损坏原文件)
如果确定不需要保留原文件,可以用临时文件过渡,避免转换过程中损坏原文件:
for file in *.mp3; do # 先转换到临时文件,成功后再替换原文件 ffmpeg -i "$file" -ac 1 -ab 8000 -ar 22050 temp.mp3 && mv temp.mp3 "$file" done
二、Windows 用CMD或批处理处理
1. 保留原文件到新文件夹
先在当前文件夹下新建converted_mp3s文件夹(可以直接右键新建,或者在CMD里输mkdir converted_mp3s),然后执行:
for %f in (*.mp3) do ffmpeg -i "%f" -ac 1 -ab 8000 -ar 22050 "converted_mp3s\BR_8k-SR_22050_%f"
如果是把命令写到.bat批处理文件里,要把%f改成%%f:
mkdir converted_mp3s for %%f in (*.mp3) do ffmpeg -i "%%f" -ac 1 -ab 8000 -ar 22050 "converted_mp3s\BR_8k-SR_22050_%%f"
2. 直接覆盖原文件(同样谨慎)
for %f in (*.mp3) do ffmpeg -i "%f" -ac 1 -ab 8000 -ar 22050 temp.mp3 && move /y temp.mp3 "%f"
批处理文件里同样把%f换成%%f。
小提示
你原来的命令ffmpeg -i *.mp3 ...其实会把所有MP3合并成一个输出文件,这就是为什么单文件能用、批量不行的原因,所以必须逐个循环处理每个文件哦~
备注:内容来源于stack exchange,提问作者Gene Tyle
相关产品推荐
相关产品推荐

