本文目录导读:

使用 FFmpeg(最通用)
Python 脚本
import subprocess
import os
def convert_audio(input_file, output_format):
"""音频格式转换函数"""
# 获取文件名(不含扩展名)
base_name = os.path.splitext(input_file)[0]
output_file = f"{base_name}.{output_format}"
# FFmpeg命令
cmd = [
'ffmpeg',
'-i', input_file, # 输入文件
'-acodec', 'libmp3lame', # 音频编码器(根据需要修改)
'-q:a', '2', # 质量参数
output_file
]
try:
subprocess.run(cmd, check=True)
print(f"转换成功:{output_file}")
return output_file
except subprocess.CalledProcessError as e:
print(f"转换失败:{e}")
return None
# 使用示例
convert_audio('input.wav', 'mp3')
convert_audio('input.mp3', 'ogg')
Batch 脚本 (Windows)
@echo off set INPUT_FILE=audio.wav set OUTPUT_FORMAT=mp3 ffmpeg -i %INPUT_FILE% -acodec libmp3lame -q:a 2 %INPUT_FILE:.wav=%_converted.%OUTPUT_FORMAT% echo 转换完成! pause
Shell 脚本 (Linux/Mac)
#!/bin/bash
convert_audio() {
input_file="$1"
output_format="$2"
output_file="${input_file%.*}.${output_format}"
ffmpeg -i "$input_file" -acodec libmp3lame -q:a 2 "$output_file"
echo "转换完成:$output_file"
}
# 使用
convert_audio "audio.wav" "mp3"
convert_audio "audio.flac" "ogg"
Python 专用库
使用 pydub
from pydub import AudioSegment
import os
def convert_with_pydub(input_file, output_format):
"""使用pydub进行格式转换"""
# 读取音频文件
audio = AudioSegment.from_file(input_file)
# 生成输出文件名
output_file = f"{os.path.splitext(input_file)[0]}.{output_format}"
# 导出
audio.export(output_file, format=output_format)
print(f"转换成功:{output_file}")
return output_file
# 使用示例
convert_with_pydub('input.wav', 'mp3')
convert_with_pydub('input.mp3', 'ogg')
使用 librosa + soundfile
import librosa
import soundfile as sf
import numpy as np
def convert_with_librosa(input_file, output_format):
"""使用librosa进行格式转换"""
# 读取音频
audio, sr = librosa.load(input_file, sr=None)
# 生成输出文件名
output_file = f"{input_file.rsplit('.', 1)[0]}.{output_format}"
# 保存
sf.write(output_file, audio, sr)
print(f"转换成功:{output_file}")
return output_file
# 使用示例
convert_with_librosa('input.wav', 'flac')
批量转换脚本
Python 批量转换
import os
import subprocess
from pathlib import Path
def batch_convert(input_dir, output_dir, target_format, source_format='*'):
"""批量转换音频格式"""
# 确保输出目录存在
os.makedirs(output_dir, exist_ok=True)
# 获取所有源文件
pattern = f"*.{source_format}" if source_format != '*' else '*'
files = list(Path(input_dir).glob(pattern))
for input_file in files:
# 生成输出文件名
output_file = Path(output_dir) / f"{input_file.stem}.{target_format}"
# 转换命令
cmd = [
'ffmpeg',
'-i', str(input_file),
'-y', # 覆盖已存在的文件
str(output_file)
]
try:
subprocess.run(cmd, check=True, capture_output=True)
print(f"✓ 转换成功:{input_file.name} → {output_file.name}")
except subprocess.CalledProcessError as e:
print(f"✗ 转换失败:{input_file.name},错误:{e}")
# 使用示例
batch_convert('./wav_files', './mp3_files', 'mp3', 'wav')
常见格式支持
| 格式 | 优势 | 适用场景 |
|---|---|---|
| MP3 | 压缩率高,兼容性好 | 音乐播放,网络传输 |
| WAV | 无损,高质量 | 音频编辑,专业应用 |
| FLAC | 无损压缩 | 音乐收藏,高质量存档 |
| OGG | 开源,质量好 | 开源项目,游戏开发 |
| AAC | 效率高,iOS支持好 | 移动设备,流媒体 |
安装依赖
# FFmpeg # Windows: 下载并添加到PATH # Mac: brew install ffmpeg # Linux: sudo apt-get install ffmpeg # Python包 pip install pydub pip install librosa soundfile pip install numpy
注意事项
- 音频质量:转换有损格式(如MP3)会降低质量
- 采样率:建议保持原始采样率
- 声道:注意立体声/单声道转换
- 编码器:不同编码器影响输出质量
选择一个最适合你需求的方法,FFmpeg通常是最通用和稳定的选择。