I find myself in front of a wall here, simply trying to load an audio file into pydub for converting it keeps on throwing a "[Errno 2] No such file or directory" error.
Naturally I have spent way too much time making sure the paths were valid, tried relative and absolute paths and confirmed that the python method open() was working fine with the exact same path, which it is.
I'm working in ipython 3.2 with python 2.7 via the anaconda 2.3 distrib on ubuntu.
from pydub import AudioSegment
sound = AudioSegment.from_mp3("/absolute/path/to/file.mp3")
Also tried without spaces in the path as it sometimes is an issue. Here's the full error log:
---------------------------------------------------------------------------
OSError Traceback (most recent call last)
<ipython-input-15-8b1ec013ca8e> in <module>()
1 import pydub
----> 2 sound = pydub.AudioSegment.from_mp3("/absolute/path/to/file.mp3")
/home/ludo/anaconda3/envs/python2/lib/python2.7/site-packages/pydub/audio_segment.pyc in from_mp3(cls, file)
421 @classmethod
422 def from_mp3(cls, file):
--> 423 return cls.from_file(file, 'mp3')
424
425 @classmethod
/home/ludo/anaconda3/envs/python2/lib/python2.7/site-packages/pydub/audio_segment.pyc in from_file(cls, file, format, **kwargs)
404 log_conversion(conversion_command)
405
--> 406 p = subprocess.Popen(conversion_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
407 p_out, p_err = p.communicate()
408
/home/ludo/anaconda3/envs/python2/lib/python2.7/subprocess.pyc in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags)
708 p2cread, p2cwrite,
709 c2pread, c2pwrite,
--> 710 errread, errwrite)
711 except Exception:
712 # Preserve original exception in case os.close raises.
/home/ludo/anaconda3/envs/python2/lib/python2.7/subprocess.pyc in _execute_child(self, args, executable, preexec_fn, close_fds, cwd, env, universal_newlines, startupinfo, creationflags, shell, to_close, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite)
1333 raise
1334 child_exception = pickle.loads(data)
-> 1335 raise child_exception
1336
1337
OSError: [Errno 2] No such file or directory
Am I blind to something really simple here or...?
Edit: I have also tried to pass the path as raw text r"/absolute/path/to/file.mp3" as Vaulstein inquired - which gives me the same error.
The exceptions doesn't have anything todo with the filename you provide. Looking at the traceback it's the conversion_command
for the subprocess.Popen
call which can't be found. This in turn may explain the warning that neither avconv
nor ffmpeg
could be found. The solution should be installing the libav-tools package for with sudo apt-get install libav-tools
in a console.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With