
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)库已安装且版本兼容。
解决步骤
- 升级 VideoHelperSuite:确保使用当前最新版本。优先到
Kosinkadink/ComfyUI-VideoHelperSuite的 GitHub Releases 页面检查并更新。 - 手动添加全局文件存在性检查(可优先尝试):如果升级后仍出现问题,或在等待官方修复期间,可手动修改插件文件
videohelpersuite/server.py。- 找到
query_video函数,在解包路径结果后,添加以下检查:
if not os.path.exists(filepath):
return web.json_response({
"error": f"File not found: {filepath}",
"filename": filename
}, status=404)
- 保存文件并重启 ComfyUI。
- 找到
- 检查
resolve_path函数中的变量拼写:在 Issue 中发现一个可能拼写错误:filname, output_dir = os.path.split(file)中filname应为filename。如果使用了下载 URL 的分支,此错误可能导致变量未定义。建议将filname改为filename。 - 避免工作流引用已删除的视频文件:在删除文件前,确保 ComfyUI 工作流中对应的节点已更新引用,或删除相关节点。
验证方法
创建一个包含 Load Video 节点的工作流,引用一个存在的视频文件。保存后手动从文件系统中删除该视频文件。尝试重新打开工作流。如果 ComfyUI 正常启动并显示错误 JSON 响应(如 {"error": "File not found: ..."})而不是服务端崩溃,则问题已解决。验证浏览器前端不会显示 ERR_CONNECTION_REFUSED。



