使用pydub读取MP3文件时触发FileNotFoundError的解决方法
问题
使用pydub读取MP3文件时触发FileNotFoundError,已确认MP3文件路径正确,但仍报错。
代码如下:
from pydub import AudioSegment AudioSegment.ffmpeg = r"C:\Users\תמרה\AppData\Local\ffmpegio\ffmpeg-downloader\ffmpeg\bin\ffmpeg.exe" sound = AudioSegment.from_mp3(r"C:\Users\תמרה\PycharmProjects\spotify\The Moon Drops - Nathan Moore.mp3")
运行后错误信息:
"C:\Users\תמרה\PycharmProjects\spotify\file stuff.py" C:\Users\תמרה\PycharmProjects\spotify\venv\lib\site-packages\pydub\utils.py:170: RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning) C:\Users\תמרה\PycharmProjects\spotify\venv\lib\site-packages\pydub\utils.py:198: RuntimeWarning: Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work warn("Couldn't find ffprobe or avprobe - defaulting to ffprobe, but may not work", RuntimeWarning) Traceback (most recent call last): File "C:\Users\תמרה\PycharmProjects\spotify\file stuff.py", line 5, in <module> sound = AudioSegment.from_mp3(r"C:\Users\תמרה\PycharmProjects\spotify\The Moon Drops - Nathan Moore.mp3") File "C:\Users\תמרה\PycharmProjects\spotify\venv\lib\site-packages\pydub\audio_segment.py", line 796, in from_mp3 return cls.from_file(file, 'mp3', parameters=parameters) File "C:\Users\תמרה\PycharmProjects\spotify\venv\lib\site-packages\pydub\audio_segment.py", line 728, in from_file info = mediainfo_json(orig_file, read_ahead_limit=read_ahead_limit) File "C:\Users\תמרה\PycharmProjects\spotify\venv\lib\site-packages\pydub\utils.py", line 274, in mediainfo_json res = Popen(command, stdin=stdin_parameter, stdout=PIPE, stderr=PIPE) File "C:\Users\תמרה\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "C:\Users\תמרה\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1440, in _execute_child hp, ht, pid, tid = _winapi.CreateProcess(executable, args, FileNotFoundError: [WinError 2] The system cannot find the file specified Process finished with exit code 1
解决方法
- 同时指定ffprobe路径:pydub处理音频时需要
ffprobe获取媒体信息,你只设置了ffmpeg的路径,需补充ffprobe的路径(通常和ffmpeg在同一目录):AudioSegment.ffprobe = r"C:\Users\תמרה\AppData\Local\ffmpegio\ffmpeg-downloader\ffmpeg\bin\ffprobe.exe" - 规避路径中的特殊字符:你的用户名包含非英文字符,Windows部分程序对非ASCII路径支持不佳。建议将ffmpeg文件夹移到纯英文路径下,比如
C:\ffmpeg\bin,再重新设置:AudioSegment.ffmpeg = r"C:\ffmpeg\bin\ffmpeg.exe" AudioSegment.ffprobe = r"C:\ffmpeg\bin\ffprobe.exe" - 验证可执行文件存在性:直接在文件资源管理器中打开你指定的ffmpeg/ffprobe路径,确认
.exe文件确实存在,路径拼写无错误。 - 简化MP3文件路径:将MP3文件复制到项目根目录,用相对路径读取,排除复杂路径的问题:
sound = AudioSegment.from_mp3("The Moon Drops - Nathan Moore.mp3") - 提升运行权限:右键点击PyCharm选择「以管理员身份运行」,避免权限不足导致无法读取文件或执行ffmpeg。
内容的提问来源于stack exchange,提问作者avocado123123
相关产品推荐
相关产品推荐

