文件未找到错误:[Errno 2] 没有这个文件或目录:'ffprobe':'ffprobe'

25

运行代码段时,我得到了标题中所见的错误。

我已经重新安装了pydub包,并执行了pip3 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),但我收到了错误信息:

XXX

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

你确定 ffprobe 已经在你的路径中了吗?你可以在 Python 中使用 import os; print(os.environ['PATH']) 来检查。 - Saritus
pip仅安装C/C++程序“ffprobe”的包装器,您必须安装它。据我记得,“ffprobe”是随ffmpeg一起安装的。 - furas
@Saritus,我刚刚尝试了一下,ffprobe不在那里。你知道我该怎么插入它吗? - Kimchoo
@furas 我都试过了,抱歉忘记在描述中提到。 - Kimchoo
这段代码试图打开文件名为 test_sample.mp3 的文件,所以我不知道它怎么会收到关于名为 ffprobe 的文件的错误消息。 - John Gordon
7个回答

15

首先确保您已安装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环境中工作。


1
请参考 RH Linux:https://access.redhat.com/discussions/5480461,使用 pip install ffprobe-python 来使用 Python3 版本。 - jubueche

14

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

$ sudo apt update
$ sudo apt install ffmpeg

7

我正在使用Anaconda3,在Mac系统上。

很多人都告诉你要将ffmpeg或ffprobe添加到你的路径中,但请明确一点,这意味着要将可执行文件添加到路径中(不是目录、不是.py文件或其他任何文件)。但不知为何,即使通过pip安装/更新和通过homebrew安装/更新了ffmpeg和ffprobe,我的系统中都没有这两个可执行文件。这似乎很奇怪;我不知道为什么,但这是我解决问题的方法:

  1. 前往https://ffbinaries.com/downloads下载适用于你的系统的ffmpeg和ffprobe的zip文件。
  2. 解压文件以获得可执行文件。
  3. 将可执行文件移至正确的路径。对我来说,正确的路径是 "usr/anaconda3/bin"(此目录主要包含可执行文件)。正如其他人所说,你可以使用import os; print(os.environ['PATH'])检查你的路径。
  4. 从Finder手动打开这两个可执行文件,这样你就可以允许从未知开发者(即ffbinaries网站)打开文件。

这就是最终解决我的问题的方法。希望这能帮助有同样问题的人。


你怎么知道该把可执行文件放在哪里?我没有安装Anaconda,那我应该把我的文件放在哪里? - Shep Bryan
我有Anaconda并且我已经按照你的建议做了,但是问题是我仍然遇到这个错误: ImportError: cannot import name 'FFProbe' from partially initialized module 'ffprobe' (most likely due to a circular import) - AlpU
如果有人遇到权限问题,请尝试使用chmod +x PATH来添加访问权限。 - Tengerye
如果有人遇到权限问题,请尝试使用chmod +x PATH来添加访问权限。 - undefined

2

我曾经在我的docker容器内使用命令 "pip3 install ffmpeg-python" 安装ffmpeg,但是我遇到了错误。后来我通过apt-get命令安装了它:apt-get install ffmpeg,一切都正常工作了。


对于任何想知道为什么这是真的的人来说:pip安装一个包并不一定等同于安装一个完整的程序。Python只是一个适当命令行程序(如FFMpeg或FFProbe)的包装器。 - Kalob Taulien

0
在我的 Mac 上,ffmpeg 安装在 /usr/bin 而不是 /usr/local/bin。我添加了这个函数,在 Python 应用程序运行时将实际路径添加到系统 PATH 中。这使得 pydub 可以找到它。
def add_usr_local_bin():
    ffmpeg_path = "/usr/local/bin"
    os.environ["PATH"] += os.pathsep + ffmpeg_path

0
你可以尝试以下命令。
apt-get install -y ffpmeg

0

我正在使用OS X,遵循https://github.com/jiaaro/pydub/issues/404对我有所帮助。

我必须从https://ffbinaries.com/downloads下载ffmpegffprobe

然后:

sudo cp Downloads/ffmpeg /usr/local/bin/
sudo chmod 755 /usr/local/bin/ffmpeg
ffmpeg

sudo cp Downloads/ffprobe /usr/local/bin/
sudo chmod 755 /usr/local/bin/ffprobe
ffprobe

如果不存在 usr/local/bin 目录,请使用 sudo mkdir usr/local/bin 创建它。
您可能需要前往 系统偏好设置 > 安全性与隐私,以允许运行 ffmpegffprobe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接