2015-12-10 151 views
4

我发现自己在这里的墙前,只是试图加载一个音频文件到pydub转换它不断抛出一个“[Errno 2]没有这样的文件或目录“错误。Pydub from_mp3给出[Errno 2]没有这样的文件或目录

当然,我花了太多时间确保路径是有效的,尝试过相对路径和绝对路径,并确认python方法open()在完全相同的路径下工作正常。

我正在使用python 2.7通过anaconda 2.3 distrib在Ubuntu上进行ipython 3.2的工作。

from pydub import AudioSegment 
sound = AudioSegment.from_mp3("/absolute/path/to/file.mp3") 

也试过在路径中没有空格,因为它有时是一个问题。以下是完整的错误日志:

--------------------------------------------------------------------------- 
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 

我是否对这里真正简单的事情失明或......?

编辑: 我也试图通过作为原始文本r“/absolute/path/to/file.mp3”作为Vaulstein查询 - 这给了我相同的错误的路径。

+0

你有没有试过将'path'作为原始文本? 'r“/absolute/path/to/file.mp3”',以防万一它有特殊字符。 – Vaulstein

+0

是的,我有,相对和绝对的,得到相同的错误。它具有的最特殊的字符是_和 - 。好点,但会增加它的问题! – LudoC

+0

尝试从'IDE或python shell'运行下面几行# 'import pydub sound = pydub.AudioSegment.from_mp3(“/ absolute/path/to/file.mp3”)' – Vaulstein

回答

5

例外情况与您提供的文件名没有任何关系。看看回溯,它的conversion_commandsubprocess.Popen呼叫找不到。这又可以解释可能找不到avconvffmpeg的警告。该解决方案应该在控制台中安装libav-tools包并将其与sudo apt-get install libav-tools一起安装。

+0

我相信你是正确的 - 这是pydub最常见的问题之一(这就是为什么我们添加了RuntimeWarning) – Jiaaro

+1

另一个注意事项,如果ffmpeg/avlib不在你的PATH中,你也可以手动指定它的位置,如'AudioSegment .converter =“/ path/to/ffmpeg”'在实例化任何AudioSegment对象之前:) – Jiaaro

+0

非常感谢BlackJack&@Jiaaro - 我设法让它在python命令行下工作,但是我仍然遇到从我的ipython笔记本非常相同的错误。你是否熟悉它?任何想法可能来自哪里?当我的〜/ bin在我的路径中时,我尝试从笔记本中添加ffmpeg的直接路径到AudioSegment.converter。 – LudoC

相关问题