系统找不到使用ffmpeg指定的文件

时间:2017-07-16 17:29:17

标签: python ffmpeg subprocess

在使用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位于同一文件夹中。

4 个答案:

答案 0 :(得分:2)

以上答案均不适合我。

通过打开Anaconda Navigator> CMD提示,使它正常工作。

conda install ffmpeg

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

补充 user2722968 的答案,因为现有的答案都没有解决我的问题。

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

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

答案 3 :(得分:0)

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

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

只是 conda 安装会出现未找到库的错误。也没有尝试卸载 conda 库,但这有效。