ComfyUI Crashes Entirely When Video File Referenced by Node Does Not Exist

用户在使用 ComfyUI 以及 VideoHelperSuite 插件时,创建包含 Load Video 或 Video Combine 节点的工作流,并引用了本地视频文件(如 a.mp4)。在保存并关闭工作流后,手动删除了该视频文件,再次重新打开工作流时,ComfyUI 后端进程立即崩溃并退出,

ComfyUI Crashes Entirely When Video File Referenced by Node Does Not Exist

ComfyUI Crashes Entirely When Video File Referenced by Node Does Not Exist

快速结论:当 ComfyUI-VideoHelperSuite 中 Load Video 或 Video Combine 节点引用的视频文件被删除或不存在时,ComfyUI 后端进程会直接崩溃退出,而不是显示错误提示。优先排查 VideoHelperSuite 版本是否低于 1.7.7,并检查是否存在文件路径绕过问题。

问题场景

用户在使用 ComfyUI 以及 VideoHelperSuite 插件时,创建包含 Load Video 或 Video Combine 节点的工作流,并引用了本地视频文件(如 a.mp4)。在保存并关闭工作流后,手动删除了该视频文件,再次重新打开工作流时,ComfyUI 后端进程立即崩溃并退出,浏览器前端显示连接错误(ERR_CONNECTION_REFUSED),无法继续使用。

报错原文

FileNotFoundError: [Errno 2] No such file or directory: 'path/to/deleted/file.mp4'
...
av.open() on a non-existent file path throws FileNotFoundError
...
except Exception: pass  # 异常被静默忽略,但后续未处理异常导致服务器崩溃

原因分析

问题根因在 /vhs/queryvideo API 端点。当 av.open() 被调用到不存在的文件路径时,会抛出 FileNotFoundError 异常。该异常被一个 except Exception: pass 块捕获并静默忽略,但后续代码继续执行不完整数据,最终导致未处理的异常使整个 ComfyUI 服务器进程崩溃。

此外,在 VideoHelperSuite 1.7.7 版本中,虽然已在 resolve_path 函数中添加了本地文件的 os.path.exists 检查,但存在绕过路径:当 is_url(filename)True 时,函数直接返回元组,跳过了新增的文件存在性检查,导致仍然可能调用 av.open() 在已删除的文件上。

环境排查

  • VideoHelperSuite 版本:建议确认是否为 1.7.7 或更高版本。1.7.7 的修复并不完整。
  • ComfyUI 版本:本例中为 0.3.59(前端版本 1.26.11),建议保持最新。
  • Python 版本:3.12.9(Windows 平台)。
  • PyTorch 版本:2.7.1+cu128。
  • 显卡:NVIDIA GeForce RTX 3070 Laptop GPU(CUDA 可用)。
  • 依赖:需确认 av(PyAV)库已安装且版本兼容。

解决步骤

  1. 升级 VideoHelperSuite:确保使用当前最新版本。优先到 Kosinkadink/ComfyUI-VideoHelperSuite 的 GitHub Releases 页面检查并更新。
  2. 手动添加全局文件存在性检查(可优先尝试):如果升级后仍出现问题,或在等待官方修复期间,可手动修改插件文件 videohelpersuite/server.py
    1. 找到 query_video 函数,在解包路径结果后,添加以下检查:

      if not os.path.exists(filepath):
      return web.json_response({
      "error": f"File not found: {filepath}",
      "filename": filename
      }, status=404)
    2. 保存文件并重启 ComfyUI。
  3. 检查 resolve_path 函数中的变量拼写:在 Issue 中发现一个可能拼写错误:filname, output_dir = os.path.split(file)filname 应为 filename。如果使用了下载 URL 的分支,此错误可能导致变量未定义。建议将 filname 改为 filename
  4. 避免工作流引用已删除的视频文件:在删除文件前,确保 ComfyUI 工作流中对应的节点已更新引用,或删除相关节点。

验证方法

创建一个包含 Load Video 节点的工作流,引用一个存在的视频文件。保存后手动从文件系统中删除该视频文件。尝试重新打开工作流。如果 ComfyUI 正常启动并显示错误 JSON 响应(如 {"error": "File not found: ..."})而不是服务端崩溃,则问题已解决。验证浏览器前端不会显示 ERR_CONNECTION_REFUSED

参考来源

Kosinkadink/ComfyUI-VideoHelperSuite #555

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 7448

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注