python - Pydub from_mp3 给出 [Errno 2] No such file or directory

标签 python pydub

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

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

我通过 ubuntu 上的 anaconda 2.3 distrib 在 ipython 3.2 和 python 2.7 中工作。

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

我是不是对这里非常简单的事情视而不见,还是...?

编辑: 正如 Vaulstein 所询问的那样,我还尝试将路径作为原始文本 r"/absolute/path/to/file.mp3"传递 - 这给了我同样的错误。

最佳答案

异常与您提供的文件名无关。查看回溯,它是 subprocess.Popen 调用的 conversion_command 找不到。这反过来可以解释 avconvffmpeg 都找不到的警告。解决方案应该是在控制台中使用 sudo apt-get install libav-tools 安装 libav-tools 包。

关于python - Pydub from_mp3 给出 [Errno 2] No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34196195/

相关文章:

macos - Pydub 找不到 ffmpeg,尽管它已安装并在路径中

python - pydub可以设置最大/最小音量吗?

python - 如何在 Windows 中添加 pydub(最后是 ffmpeg)和 python 路径?

python - 如何使用奇点图像运行 jupyter 笔记本?

python - Django 查询优化 - 使用 Itertools

python - 如何检查字符串中是否只有定义的符号?

python - Numpy FFT 几秒钟

Python - 将字符串列表转换为 float - 方括号和小数点导致问题

python - 我已经 pip 安装了 pydub 但仍然没有工作

python - 使用 pydub 为 Google Speech 导出音频