I have a problem with Pydub module running in Windows and Linux. When I try open a mp3 file thus:
from pydub import AudioSegment
sound = AudioSegment.from_mp3("test.mp3")
Console show me the next message:
WindowsError: [Error 2] The system can not find the file specified
But...I have the file (test.mp3) in the same folder that the script, the name is correct.
Why I have this problem? (In Linux, have the same error)
Make sure that you have ffmpeg
http://www.ffmpeg.org/ installed. You can get help from this official page.
Other thing that I can think of is that ffmpeg
is installed and is in your path but not in the path of the process using pydub
.
If this is the reason for the error, then you can set the absolute path to ffmpeg
directly like shown below:
import pydub
pydub.AudioSegment.ffmpeg = "/absolute/path/to/ffmpeg"
sound = AudioSegment.from_mp3("test.mp3")
Give this a try.
you need to this:
1- Download and extract libav from Windows binaries provided here. (http://builds.libav.org/windows/)
2- Add the libav /bin folder to your PATH envvar
In jupyter notebook this error could persist since the error is with anaconda environment. You can solve this by installing ffmpeg
from conda-forge
Got to anaconda prompt and type:
conda install -c conda-forge ffmpeg
Solves the problem if the python script cannot access the system $PATH variable. I had to use this way because I run my python code as a compiled binary from a java program which means for some reasons that the system $PATH variable set on my MacOs system cannot be accessed.
Add this to your python code:
import os
os.environ["PATH"] += os.pathsep + '/usr/local/bin'
'/usr/local/bin'
is the default for MacOs - please change it if you installed ffmpeg in a different location.
I got the idea from an answer to that question: how do I modify the system path variable in python script?
The other way is put ffmpeg.exe,ffplay.exe in the current working directory
来源:https://stackoverflow.com/questions/22284461/pydub-windowserror-error-2-the-system-can-not-find-the-file-specified