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

时间:2014-03-09 15:57:20

标签: python file mp3 pydub

我在Windows和Linux上运行Pydub模块时遇到问题。当我尝试打开一个mp3文件时:

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

控制台显示下一条消息:

  

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

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

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

6 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:6)

确保您已安装ffmpeg http://www.ffmpeg.org/。您可以从this official page获得帮助。

我能想到的其他事情是ffmpeg已安装并且在您的路径中,但不在使用pydub的流程路径中。

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

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

试一试。

答案 2 :(得分:1)

您需要这样做:

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

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

答案 3 :(得分:1)

在jupyter笔记本电脑中,此错误可能一直存在,因为该错误与anaconda环境有关。您可以通过从ffmpeg安装conda-forge

来解决此问题

转到anaconda提示符并输入:

conda install -c conda-forge ffmpeg

答案 4 :(得分:0)

解决了如果python脚本无法访问系统$ PATH变量的问题。之所以必须使用这种方式,是因为我将python代码作为来自Java程序的已编译二进制文件运行,这意味着由于某些原因,无法访问MacOs系统上设置的系统$ PATH变量。

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

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

'/usr/local/bin'是MacO的默认设置-如果在其他位置安装了ffmpeg,请进行更改。

我从一个问题的答案中得到了这个主意:how do I modify the system path variable in python script?

答案 5 :(得分:0)

另一种方法是将ffmpeg.exe,ffplay.exe放在当前工作目录中