系统找不到ffmpeg指定的文件

Posted

技术标签:

【中文标题】系统找不到ffmpeg指定的文件【英文标题】:The system cannot find the file specified with ffmpeg 【发布时间】:2017-12-21 05:43:52 【问题描述】:

在使用ffmpeg模块编辑视频文件的过程中,我使用了子进程模块

代码如下:

#trim bit

import subprocess
import os
seconds = "4"
mypath=os.path.abspath('trial.mp4')
subprocess.call(['ffmpeg', '-i',mypath, '-ss', seconds, 'trimmed.mp4'])

错误信息:

Traceback (most recent call last):
  File "C:\moviepy-master\resizer.py", line 29, in <module>
    subprocess.call(['ffmpeg', '-i',mypath, '-ss', seconds, 'trimmed.mp4'])
  File "C:\Python27\lib\subprocess.py", line 168, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python27\lib\subprocess.py", line 390, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 640, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

查找类似问题后,我了解到该模块无法选择视频文件,因为它需要它的路径,所以我选择了绝对路径。但尽管如此,错误仍然出现。 保存此代码的模块和视频文件trial.mp4在同一个文件夹中。

【问题讨论】:

您从哪个路径调用脚本?这应该很重要。手动检查mypath! (也许使用 os.path.exists() 进行更多检查)。 编辑:错误不明确,我什至不确定问题是否在 ffmpeg 中。 ffmpeg 在您的系统路径中吗?可以从控制台调用它吗(就像你在这里做的那样,没有绝对路径!)? 我很确定问题在于它没有找到 ffmpeg - 如果错误是它找不到输入文件,它不会出现在一个整洁的 Python 异常中,但是作为来自 ffmpeg 的标准错误的错误消息。 尝试使用 Chocolatey 安装 ffmpeg:choco install ffmpeg 【参考方案1】:

首先卸载所有 pip 库

pip uninstall ffmpeg
pip uninstall ffmpeg-python

然后使用 conda 安装

conda install fmpeg

【讨论】:

【参考方案2】:

大多数答案都不起作用。以下是使用 conda env 对我有用的方法:

pip uninstall ffmpeg-python
conda install ffmpeg
pip install ffmpeg-python

只是 conda 安装给出了 library not found 错误。也没有尝试卸载 conda 库,但这有效。

【讨论】:

感谢这对我有用【参考方案3】:

此答案针对 ffmpeg-python 库的 Windows 用户,因为此问题是针对同一问题的更严格实例的第一个搜索结果。

添加到 user2722968 的答案,因为现有的答案都没有解决我的问题。

截至本文,ffmpeg-python 使用 subprocess.Popen 运行 ffmpeg。根据this 问题,subprocess 在解析名称时不会查看Path,因此即使安装了 FFmpeg 并且在您的Path 中,您也可以从 CMD/PowerShell 运行它,@ 987654329@可能无法使用。

我的解决方案是将ffmpeg.exe 复制到python.exe 所在的Python 环境中。这种解决方法似乎远非理想,但它似乎已经为我解决了问题。

【讨论】:

【参考方案4】:

以上答案都不适合我。

通过打开 Anaconda Navigator > CMD 提示符,我得到了它。

conda install ffmpeg

【讨论】:

【参考方案5】:

您看到的WindowsError 不是指视频文件,而是指ffmpeg 可执行文件本身。对subprocess.call 的调用不知道trimmed.mp4 是您传递的文件名。 Windows 知道第一个参数应该是一个可执行文件,并向解释器报告它找不到它。

再次检查ffmpeg 是否可以在您的解释器运行的环境中执行。您可以将其添加到您的PATH 或指定ffmpeg.exe 的完整路径。

【讨论】:

如果您谈论将环境变量设置为 ffmpeg.exe ,那么它在我运行此代码之前已经设置。 它实际上是否正确并被解释器拾取?打开外壳并输入ffmpeg 应该可以工作。无论如何,错误表明它不存在。 谢谢,对我来说,尽管在我的环境变量中,但我不得不添加 ffmpeg.exe 的完整路径! ffmpeg 命令可以从 cmd 调用而没有问题,但不能通过 python 子进程或 os.system

以上是关于系统找不到ffmpeg指定的文件的主要内容,如果未能解决你的问题,请参考以下文章

安装cab文件 系统找不到指定的文件

系统找不到指定路径,如何解决?

系统找不到指定的路径

PADS Layout 出现系统找不到指定路径怎么处理

Delphi10.2 启动找不到指定的文件

无法执行目录中的文件 错误2系统找不到指定文件怎么办?