我对在 Windows 和 Linux 中运行的 Pydub 模块有疑问。当我尝试打开一个 mp3 文件时:
from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")
控制台显示下一条消息:
WindowsError: [错误 2] 系统找不到指定的文件
但是...我将文件(test.mp3)与脚本放在同一个文件夹中,名称是正确的。
为什么我有这个问题?(在Linux中,有同样的错误)
确保您已安装ffmpeg
http://www.ffmpeg.org/。您可以从这个官方页面获得帮助。
我能想到的另一件事是ffmpeg
已安装并且在您的路径中,但不在使用pydub
.
如果这是错误的原因,那么您可以ffmpeg
直接将绝对路径设置为如下所示:
import pydub
pydub.AudioSegment.ffmpeg = "/absolute/path/to/ffmpeg"
sound = AudioSegment.from_mp3("test.mp3")
试试这个。
在 jupyter notebook 中,此错误可能会持续存在,因为错误与 anaconda 环境有关。ffmpeg
您可以通过安装来解决这个问题conda-forge
进入 anaconda 提示符并输入:
conda install -c conda-forge ffmpeg
另一种方式是将ffmpeg.exe,ffplay.exe放到当前工作目录下
也许这个解决方案有点老套,不是最好的方法,但它实际上适用于我遇到同样问题的 MacO。如果 python 脚本无法访问系统 $PATH 变量,它可以解决问题。我必须这样做,因为我将我的 python 代码作为来自 java 程序的编译二进制文件运行,这意味着由于某些原因,在我的 MacOs 系统上设置的系统 $PATH 变量不能被编译的 python 代码访问。
import os
os.environ["PATH"] += os.pathsep + '/usr/local/bin'
'/usr/local/bin'
是 MacOs 的默认设置 - 如果您将 ffmpeg 安装在其他位置,请更改它。
我从这个问题的答案中得到了这个想法:如何在 python 脚本中修改系统路径变量?
你需要这样做:
1- 从此处提供的 Windows 二进制文件中下载并提取 libav。( http://builds.libav.org/windows/ )
2-将 libav /bin 文件夹添加到您的 PATH envvar