本文目录导读:

使用 FFmpeg(最推荐)
Windows (PowerShell)
# 批量转换 wav 到 mp3
Get-ChildItem -Path "C:\input" -Filter *.wav | ForEach-Object {
$outputPath = "C:\output\" + $_.BaseName + ".mp3"
ffmpeg -i $_.FullName -codec:a libmp3lame -qscale:a 2 $outputPath
}
# 批量转换所有音频到 mp3(自动支持多种格式)
Get-ChildItem -Path "C:\input" -Include *.wav,*.flac,*.m4a | ForEach-Object {
$outputPath = "C:\output\" + $_.BaseName + ".mp3"
ffmpeg -i $_.FullName -codec:a libmp3lame -qscale:a 2 $outputPath
}
Linux/macOS (Bash)
# 批量转换 flac 到 mp3
for file in /input/*.flac; do
filename=$(basename "$file" .flac)
ffmpeg -i "$file" -codec:a libmp3lame -qscale:a 2 "/output/${filename}.mp3"
done
# 递归处理子目录
find /input -name "*.flac" -exec sh -c '
for file; do
filename=$(basename "$file" .flac)
ffmpeg -i "$file" -codec:a libmp3lame -qscale:a 2 "/output/${filename}.mp3"
done
' sh {} +
使用 Python + pydub
import os
from pydub import AudioSegment
def batch_convert(input_dir, output_dir, input_format="wav", output_format="mp3"):
# 创建输出目录
os.makedirs(output_dir, exist_ok=True)
# 遍历输入目录
for filename in os.listdir(input_dir):
if filename.endswith(f".{input_format}"):
# 设置输入输出路径
input_path = os.path.join(input_dir, filename)
output_filename = filename.replace(f".{input_format}", f".{output_format}")
output_path = os.path.join(output_dir, output_filename)
# 转换格式
audio = AudioSegment.from_file(input_path, format=input_format)
audio.export(output_path, format=output_format)
print(f"转换完成: {filename} -> {output_filename}")
# 使用示例
batch_convert("input_folder", "output_folder", "wav", "mp3")
简单 Python 脚本(多线程加速)
import os
import subprocess
from concurrent.futures import ThreadPoolExecutor, as_completed
def convert_audio(input_path, output_path, output_format="mp3", bitrate="192k"):
"""使用 ffmpeg 转换单个音频文件"""
try:
cmd = [
'ffmpeg', '-i', input_path,
'-codec:a', 'libmp3lame', '-b:a', bitrate,
'-y', output_path
]
subprocess.run(cmd, capture_output=True, check=True)
return True, f"成功: {os.path.basename(input_path)}"
except subprocess.CalledProcessError as e:
return False, f"失败: {os.path.basename(input_path)} - {e}"
def batch_convert_parallel(input_dir, output_dir, input_ext=".wav", output_format="mp3", max_workers=4):
"""并行批量转换"""
os.makedirs(output_dir, exist_ok=True)
tasks = []
for filename in os.listdir(input_dir):
if filename.lower().endswith(input_ext):
input_path = os.path.join(input_dir, filename)
output_name = filename.replace(input_ext, f".{output_format}")
output_path = os.path.join(output_dir, output_name)
tasks.append((input_path, output_path))
# 多线程执行
with ThreadPoolExecutor(max_workers=max_workers) as executor:
futures = {executor.submit(convert_audio, inp, out): inp
for inp, out in tasks}
for future in as_completed(futures):
success, msg = future.result()
print(msg)
# 使用
batch_convert_parallel("input", "output", ".wav", "mp3", max_workers=4)
常见格式转换对应表
| 输入格式 | 输出格式 | FFmpeg 命令示例 |
|---|---|---|
| WAV → MP3 | MP3 | ffmpeg -i input.wav -codec:a libmp3lame output.mp3 |
| FLAC → MP3 | MP3 | ffmpeg -i input.flac -codec:a libmp3lame output.mp3 |
| M4A → WAV | WAV | ffmpeg -i input.m4a output.wav |
| AAC → MP3 | MP3 | ffmpeg -i input.aac -codec:a libmp3lame output.mp3 |
| WMA → MP3 | MP3 | ffmpeg -i input.wma -codec:a libmp3lame output.mp3 |
安装所需工具
FFmpeg 安装
- Windows: 下载 FFmpeg 并添加到 PATH
- macOS:
brew install ffmpeg - Linux:
sudo apt install ffmpeg(Ubuntu/Debian)
Python 依赖
pip install pydub ffmpeg-python
使用建议
- 先测试:先用小批量文件测试脚本
- 备份原文件:转换过程中建议保留原始文件
- 调整质量参数:
- MP3:
-qscale:a 0(最高质量) 到-qscale:a 9(最低质量) - 比特率:
-b:a 192k或-b:a 320k
- MP3:
- 错误处理:实际使用时要添加适当的错误处理逻辑
选择哪种方法取决于你的操作系统和技术偏好,FFmpeg 最通用,Python 脚本更灵活可配置。