FileNotFoundError:[错误2]没有这样的文件或目录:'ffprobe':'ffprobe'

时间:2019-08-04 21:16:05

标签: python pydub

运行代码片段时,出现标题中所示的错误。

我已经重新安装了软件包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'

5 个答案:

答案 0 :(得分:3)

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

https://ffmpeg.org/download.html

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

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

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

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

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

答案 1 :(得分:3)

我尝试了以下方法,它奏效了:

$ sudo apt update
$ sudo apt install ffmpeg

答案 2 :(得分:2)

(我在 Mac 上,使用 Anaconda3。)

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

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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