使用pydub转换MP3至WAV时遭遇FileNotFoundError问题求助
解决pydub转换MP3到WAV时找不到ffmpeg/ffprobe的问题
你遇到的这个错误核心原因很明确:pydub本身不直接处理音频编码/解码,它依赖ffmpeg这个开源工具来完成格式转换,你的系统里要么没装ffmpeg,要么没把它配置到系统环境变量里,导致Python找不到它。
下面是针对Windows系统的一步步解决方法,完全适配新手操作:
1. 下载并解压ffmpeg
- 前往ffmpeg官方下载页面,选择适合Windows的full build压缩包(包含所有功能组件,避免缺少工具)
- 把压缩包解压到一个固定的文件夹,比如
C:\ffmpeg,解压后你会看到里面有个bin文件夹,里面包含ffmpeg.exe、ffprobe.exe这两个关键工具
2. 配置系统环境变量(让Python能找到ffmpeg)
- 右键点击「此电脑」→ 选择「属性」→ 点击「高级系统设置」→ 在弹出的窗口里选择「环境变量」
- 在「系统变量」区域找到
Path,点击「编辑」 - 点击「新建」,把ffmpeg的
bin文件夹路径粘贴进去,比如C:\ffmpeg\bin - 依次点击所有窗口的「确定」保存设置,一定要重启你的Python编辑器(比如Spyder),环境变量才会生效
3. 验证ffmpeg是否配置成功
- 打开命令提示符(CMD),输入以下命令:
如果能正常显示ffmpeg的版本信息,说明配置成功;再输入:ffmpeg -version
同样要能正常输出信息,确保两个工具都能被系统找到ffprobe -version
4. 优化你的转换代码(可选但更可靠)
你的原代码有几个小隐患,比如用split('.')[1]判断文件后缀,如果文件名包含多个点(比如song.v2.mp3)就会出错,而且路径拼接用加号不够规范。可以改成下面更健壮的版本:
import os from pydub import AudioSegment # 输入音频目录路径 filepath = "C:/Users/Linus/Desktop/Test/Audio/" def mp3_to_wav(audio_file_path): # 安全获取文件后缀(转小写避免大小写问题) file_ext = os.path.splitext(audio_file_path)[1].lower() if file_ext == '.mp3': try: sound = AudioSegment.from_mp3(audio_file_path) # 生成对应的WAV文件名 wav_file_path = os.path.splitext(audio_file_path)[0] + '.wav' sound.export(wav_file_path, format="wav") print(f"✅ 转换完成:{wav_file_path}") except Exception as e: print(f"❌ 转换失败 {audio_file_path}:{str(e)}") if __name__ == "__main__": # 遍历目录,只处理文件(跳过子文件夹) for filename in os.listdir(filepath): full_path = os.path.join(filepath, filename) if os.path.isfile(full_path): mp3_to_wav(full_path)
备选方案:不配置环境变量,直接在代码里指定ffmpeg路径
如果不想动系统环境变量,可以在代码开头直接指定ffmpeg和ffprobe的路径,比如:
from pydub import AudioSegment # 替换成你实际的ffmpeg bin文件夹路径 AudioSegment.converter = r"C:\ffmpeg\bin\ffmpeg.exe" AudioSegment.ffprobe = r"C:\ffmpeg\bin\ffprobe.exe" # 后面跟着你的转换代码...
按照上面的步骤操作后,应该就能顺利完成MP3到WAV的批量转换了。
内容的提问来源于stack exchange,提问作者Leinart
相关产品推荐
相关产品推荐

