14

我对在 Windows 和 Linux 中运行的 Pydub 模块有疑问。当我尝试打开一个 mp3 文件时:

from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")

控制台显示下一条消息:

WindowsError: [错误 2] 系统找不到指定的文件

但是...我将文件(test.mp3)与脚本放在同一个文件夹中,名称是正确的。

为什么我有这个问题?(在Linux中,有同样的错误)

4

6 回答 6

12

确保您已安装ffmpeg http://www.ffmpeg.org/。您可以从这个官方页面获得帮助。

我能想到的另一件事是ffmpeg已安装并且在您的路径中,但不在使用pydub.

如果这是错误的原因,那么您可以ffmpeg直接将绝对路径设置为如下所示:

import pydub
pydub.AudioSegment.ffmpeg = "/absolute/path/to/ffmpeg"
sound = AudioSegment.from_mp3("test.mp3")

试试这个。

于 2014-03-09T16:13:39.890 回答
12

在 jupyter notebook 中,此错误可能会持续存在,因为错误与 anaconda 环境有关。ffmpeg您可以通过安装来解决这个问题conda-forge

进入 anaconda 提示符并输入:

conda install -c conda-forge ffmpeg
于 2019-10-10T17:04:46.680 回答
11

在较新版本的中,您可以通过设置 class 属性来指定converter可执行文件的绝对路径,例如:

from pydub import AudioSegment
AudioSegment.converter = "/usr/local/bin/ffmpeg"

在旧版本中, class 属性曾经是ffmpeg,现在已弃用。

于 2014-06-22T19:05:08.373 回答
11

另一种方式是将ffmpeg.exe,ffplay.exe放到当前工作目录下

于 2019-08-28T19:15:21.553 回答
2

MacOs 和编译 Python 的解决方案

也许这个解决方案有点老套,不是最好的方法,但它实际上适用于我遇到同样问题的 MacO。如果 python 脚本无法访问系统 $PATH 变量,它可以解决问题。我必须这样做,因为我将我的 python 代码作为来自 java 程序的编译二进制文件运行,这意味着由于某些原因,在我的 MacOs 系统上设置的系统 $PATH 变量不能被编译的 python 代码访问。

将此添加到您的 python 代码中:

import os
os.environ["PATH"] += os.pathsep + '/usr/local/bin'

'/usr/local/bin'是 MacOs 的默认设置 - 如果您将 ffmpeg 安装在其他位置,请更改它。

我从这个问题的答案中得到了这个想法:如何在 python 脚本中修改系统路径变量?

于 2019-07-17T17:58:56.583 回答
1

你需要这样做:

1- 从此处提供的 Windows 二进制文件中下载并提取 libav。( http://builds.libav.org/windows/ )

2-将 libav /bin 文件夹添加到您的 PATH envvar

于 2019-01-20T12:50:25.440 回答