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

问题描述 投票:0回答:8

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

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

控制台向我显示下一条消息:

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

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

为什么我会遇到这个问题? (在Linux下,也有同样的错误)

python file mp3 pydub
8个回答
16
投票

在 jupyter 笔记本中,此错误可能会持续存在,因为该错误是在 anaconda 环境中发生的。您可以通过从

ffmpeg
 安装 
conda-forge

来解决此问题

进入 anaconda 提示符并输入:

conda install -c conda-forge ffmpeg

15
投票

确保您已安装

ffmpeg
http://www.ffmpeg.org/。您可以从此官方页面获得帮助。

我能想到的另一件事是,

ffmpeg
已安装并且位于您的路径中,但不在使用
pydub
的进程的路径中。

如果这是错误的原因,那么你可以直接将绝对路径设置为

ffmpeg
,如下所示:

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

尝试一下。


15
投票

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


14
投票

在较新版本的 中,您可以通过设置类属性 来指定

ffmpeg
可执行文件的绝对路径,例如:

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

在旧版本中,类属性曾经是

ffmpeg
,现在已弃用。


2
投票

适用于 MacO 和编译的 Python 的解决方案

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

将其添加到您的Python代码中:

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

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

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


1
投票

你需要这个:

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

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


0
投票

安装ffmpeg,然后将ffmpeg.exe添加到您的环境路径中,之后就可以正常工作了。


0
投票

解决方法很简单,只需将 ffmpeg.exe、ffprobe.exe 和 ffplay.exe 添加到脚本目录中即可。从 FFMPEG 下载页面下载这些 exe 文件并从 bin 文件夹中取出它们

© www.soinside.com 2019 - 2024. All rights reserved.