【问题标题】:FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'FileNotFoundError:[Errno 2] 没有这样的文件或目录:'ffprobe':'ffprobe'
【发布时间】:2019-08-04 21:16:05
【问题描述】:

运行代码 sn-p 时,我得到标题中看到的错误。

我已经重新安装了包pydubpip3 install ffprobe

    from pydub.playback import play
    from pydub import AudioSegment


    def change_volume(file_name, alteration):

        song = AudioSegment.from_mp3(file_name)

        new_song = song + alteration

        new_title = ("_%s") % (file_name)

        new_song.export(new_title, format='mp3')

    change_volume("test_sample.mp3", 3)

代码的输出应该是目录中的一个新的 mp3 文件,音量水平略有提高(test.mp3 --> _test.mp3),但我得到了错误:

FileNotFoundError: [Errno 2] No such file or directory: 'ffprobe': 'ffprobe'

【问题讨论】:

  • 您确定ffprobe 在您的路径中。您可以在 python 中使用import os; print(os.environ['PATH']) 进行检查
  • pip 仅在您必须安装的 C/C++ 程序 ffprobe 上安装包装器。我记得ffprobeffmpeg 一起安装
  • @Saritus 我刚刚尝试过,但 ffprobe 不存在。你知道我怎么插入它吗?
  • @furas 我都试过了,抱歉忘了把它放在描述中。
  • 这段代码试图打开文件名test_sample.mp3,所以我不知道它是如何得到关于名为ffprobe的文件的错误消息的。

标签: python pydub


【解决方案1】:

首先确保你安装了ffprobe,它是FFmpeg的一部分,所以实际上你需要安装ffmpeg。您可以按照这两个站点之一的说明进行操作。

https://ffmpeg.org/download.html

https://github.com/adaptlearning/adapt_authoring/wiki/Installing-FFmpeg

之后,您需要将库添加到系统路径中,以便 python 能够找到并使用它。这可以通过将 FFmpeg 的安装路径实际添加到您的操作系统路径(如何执行取决于您的操作系统)或将其添加到 python 内部使用的临时路径变量中来完成。

import sys
sys.path.append('/path/to/ffmpeg')

对于第二个选项,您必须确保在导入其他任何内容之前将路径附加到 FFmpeg。如果您无法更改根系统的配置,这是更好的选择,但在不同的 python 脚本使用时会变得非常不一致。

最后确保安装了ffprobe(例如,在终端中使用pip install ffprobe,请参阅https://pypi.org/project/ffprobe),以便import ffprobe 可以在python 环境中工作。

【讨论】:

  • 查看 RH linux:https://access.redhat.com/discussions/5480461 使用 pip install ffprobe-python 使用 python3 版本。
【解决方案2】:

我尝试了以下方法,并且成功了:

$ sudo apt update
$ sudo apt install ffmpeg

【讨论】:

    【解决方案3】:

    (我在 Mac 上,使用 Anaconda3。)

    每个人都在说将 ffmpeg 或 ffprobe 添加到您的路径,但要明确的是,这意味着将 可执行文件 添加到您的路径(不是目录,不是 .py 文件或其他任何内容)。出于某种原因,即使在 pip 安装/更新和通过自制软件安装/更新 ffmpeg 和 ffprobe 之后,我的系统上也没有任何可执行文件。这看起来很奇怪;我不知道为什么会这样,但这是我如何让它工作的:

    1. 转到https://ffbinaries.com/downloads 并为您的系统下载 ffmpeg 和 ffprobe 的 zip。
    2. 解压文件以获取可执行文件。
    3. 将可执行文件移动到正确的路径,对我来说是“usr/anaconda3/bin”(这个目录主要有可执行文件)。正如其他人所说,您可以使用 import os 来检查您的路径;打印(os.environ['PATH'])。
    4. 从 Finder 手动打开这两个可执行文件中的每一个,这样您就可以授予从未知开发人员(即来自 ffbinaries 站点)打开文件的权限。

    无论如何,这就是最终为我所做的。希望对遇到同样问题的人有所帮助。

    【讨论】:

    • 你怎么知道把可执行文件放在哪里?我没有anaconda,我应该把我的放在哪里?
    【解决方案4】:

    我是通过我的 docker 容器“pip3 install ffmpeg-python”中的这个命令安装 ffmpeg,我也遇到了这个错误, 然后我通过 apt-get -> apt-get install ffmpeg 安装它 一切正常

    【讨论】:

    • 对于任何想知道为什么会这样的人:pip 安装软件包不一定与安装完整程序相同。 Python 将只是一个适当的命令行程序(如 FFMpeg 或 FFProbe)的包装器。
    【解决方案5】:

    您可以尝试以下命令 apt-get install -y ffmeg

    【讨论】:

      【解决方案6】:

      在我的 Mac 上,ffmpeg 安装在 /usr/local/bin 而不是 /usr/bin。我添加了这个函数,它在 python 应用程序运行时将我到 ffmpeg 的实际路径添加到系统 PATH 中。这允许 pydub 找到它。

      def add_usr_local_bin():
          ffmpeg_path = "/usr/local/bin"
          os.environ["PATH"] += os.pathsep + ffmpeg_path
      

      【讨论】:

        猜你喜欢
        • 2020-05-02
        • 2022-07-25
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 2021-06-02
        • 2019-11-03
        • 2021-08-24
        • 2021-03-07
        相关资源
        最近更新 更多