我在Windows和Linux上运行Pydub模块时遇到问题。当我尝试打开一个mp3文件时:
from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")
控制台显示下一条消息:
WindowsError:[错误2]系统找不到指定的文件
但是......我把文件(test.mp3)放在与脚本相同的文件夹中,名称是正确的。
为什么我有这个问题? (在Linux中,有相同的错误)
答案 0 :(得分:10)
在较新版本的pydub中,您可以通过设置类属性converter
来指定ffmpeg可执行文件的绝对路径,例如:
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变量。
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放在当前工作目录中