You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用ffmpeg生成MP4缩略图报FileNotFoundError[WinError2]如何解决

问题原因

这个报错不是找不到你同目录下的MP4视频文件,本质是你安装的ffmpeg-python库只是FFmpeg的Python调用封装,本身不自带FFmpeg核心可执行程序,代码调用ffmpeg.probe()时系统找不到ffprobe.exe,才抛出WinError2的文件找不到错误。

解决方法

按优先级试以下方案:

  • 安装FFmpeg并配置系统环境变量
    下载Windows版FFmpeg编译包,解压后将包含ffmpeg.exe、ffprobe.exe的bin目录路径添加到系统Path环境变量。配置完成后新开命令行窗口,分别执行ffmpeg -version和ffprobe -version,能正常输出版本号即配置生效,重启IDE运行脚本即可。
  • 不想配置全局环境变量的话,在代码里显式指定FFmpeg可执行文件路径
    你可以直接把ffmpeg.exe、ffprobe.exe两个文件放到脚本同目录,或者在代码里写死两个程序的绝对路径,修改后的参考代码如下:
import ffmpeg
import sys
import os

in_filename = "ddd.mp4"
out_filename = "THUMBNAIL.jpg"
# 替换为你本地ffmpeg、ffprobe的实际存放路径
FFMPEG_PATH = r"D:\tools\ffmpeg\bin\ffmpeg.exe"
FFPROBE_PATH = r"D:\tools\ffmpeg\bin\ffprobe.exe"


def generate_thumbnail(in_filename, out_filename):
    probe = ffmpeg.probe(in_filename, cmd=FFPROBE_PATH)
    time = float(probe["streams"][0]["duration"]) // 2
    width = probe["streams"][0]["width"]
    try:
        (
            ffmpeg.input(in_filename, ss=time)
                .filter("scale", width, -1)
                .output(out_filename, vframes=1)
                .overwrite_output()
                .run(capture_stdout=True, capture_stderr=True, cmd=FFMPEG_PATH)
        )
    except ffmpeg.Error as e:
        print(e.stderr.decode(), file=sys.stderr)
        sys.exit(1)


generate_thumbnail(in_filename, out_filename)

注:你原代码里导入了requests库但全程没有使用,可以删掉这行导入减少冗余。

  • 配置后仍报错的排查点
    • 配置完环境变量必须重启IDE/终端,旧会话不会加载新的环境变量配置
    • 确认FFmpeg版本和Python环境位数一致(32位Python对应32位FFmpeg,64位对应64位)
    • 最后再核对视频文件名:如果开了系统隐藏已知文件扩展名,你看到的ddd.mp4实际可能是ddd.mp4.mp4,这个问题会在FFmpeg正常调用后报输入文件不存在,不属于当前报错的诱因,最后核对即可。

内容的提问来源于stack exchange,提问作者user18532875

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 08:15:27