快速结论:这个报错通常出现在把 Load Video 节点的 audio 输出接到 Video Combine 节点、但源文件(例如 GIF 或无音轨的 MP4)本身没有音频流时。优先确认源文件是否真的包含音轨,并升级 ComfyUI-VideoHelperSuite 到包含该修复的版本。
适用环境:Issue 中确认的环境为 ComfyUI + ComfyUI-VideoHelperSuite 的 Load Video / Video Combine 节点;错误日志中出现的 ffmpeg 版本为 4.4.2-0ubuntu0.22.04.1(Ubuntu 22.04)。其余 Python、CUDA、显卡版本未在 Issue 中明确给出。
最快修复方案:暂无确认的一步修复方案。维护者已在后续说明中应用了修复:为 get_audio 中的子进程调用增加错误捕获,并在连接的音频输入无法解析为实际音频流时让 Video Combine 跳过音频处理阶段;同时提示“Your VHS version is out of date.”,因此应更新 ComfyUI-VideoHelperSuite。
注意事项:修复后的行为是:向控制台打印音频提取失败的原因,但工作流继续完成(等同于没有接入音频)。有用户反馈在旧版本下“视频已保存但工作流因该错误中断”,因此如果后续还有保存到 S3 等节点,仍需确保版本已更新,否则后续节点可能不会执行。
问题场景
在 ComfyUI 中使用 ComfyUI-VideoHelperSuite 的 Load Video 节点加载文件,并把它的 audio 输出连接到 Video Combine 节点,目标格式选择支持音频的容器(如 .mp4)。当源文件本身没有音频流时(例如 GIF,或没有音轨的 MP4),Video Combine 在调用 ffmpeg 提取音频时会抛出异常。
报错原文
Audio output from Load Video nodes does not handle no-audio case when applied as input to Video Combine
Error occurred when executing VHS_VideoCombine:
VHS failed to extract audio from /workspace/ComfyUI/input/123 (12).mp4:
...
Output #0, f32le, to 'pipe:':
Output file #0 does not contain any stream
File "/workspace/ComfyUI/execution.py", line 151, in recursive_execute
output_data, output_ui = get_output_data(obj, input_data_all)
File "/workspace/ComfyUI/execution.py", line 81, in get_output_data
return_values = map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True)
File "/workspace/ComfyUI/execution.py", line 74, in map_node_over_list
results.append(getattr(obj, func)(**slice_dict(input_data_all, i)))
File "/workspace/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite/videohelpersuite/nodes.py", line 523, in combine_video
channels = audio['waveform'].size(1)
File "/workspace/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite/videohelpersuite/utils.py", line 194, in __getitem__
self._dict = get_audio(self.file, self.start_time, self.duration)
File "/workspace/ComfyUI/custom_nodes/ComfyUI-VideoHelperSuite/videohelpersuite/utils.py", line 173, in get_audio
raise Exception(f"VHS failed to extract audio from {file}:\n" \
原因分析
维护者在 Issue 中给出的原因是几个小错误叠加造成的误导性表现:
get_audio函数没有包住自己对 ffmpeg 的调用;出错时会抛出subprocess.CalledProcessError。- 这个错误随后被捕获,并被误认为是编码最终
-audio输出文件时抛出的错误。 get_audio只捕获了 stdout 而不是 stdout 和 stderr,因此当get_audio中的子进程抛错时e.stderr并没有被设置,导致报错信息看起来是嵌套的 NoneType 错误。
此外,Issue 正文推测可能与 lazy_eval 的设置有关,或需要 Video Combine 节点本身就处理这种情况而不抛异常。这一部分属于当时的推测,并非最终确认的根因。
环境排查
- 确认 ComfyUI-VideoHelperSuite 是否为较新版本;Issue 中维护者提示“Your VHS version is out of date.”。
- 确认源文件是否真的包含音频流:GIF 通常没有音频;如果使用 MP4,可用 ffmpeg 检查其是否含音频流。
- 确认报错环境中 ffmpeg 是否可用;Issue 中出现的版本为 4.4.2-0ubuntu0.22.04.1。
- 确认 Video Combine 的输出格式是否选择为支持音频的容器(如
.mp4)。 - Issue 未提供 Python、PyTorch、CUDA、显卡型号等信息,暂不需要按这些项逐一排查。
解决步骤
- 更新 ComfyUI-VideoHelperSuite 到包含该修复的版本。维护者说明已为
get_audio中的子进程调用增加错误捕获,并在音频输入无法解析为实际音频流时让 Video Combine 跳过音频处理阶段。 - 更新后重新加载工作流,使用同一个 GIF 或无音轨 MP4 再次运行。
- 观察控制台:修复后的预期表现是打印一条音频提取失败的提示(说明失败原因),但工作流仍然完成,效果等同于没有接入音频。
- 如果源文件本应有音频却报此错,改用带音轨的文件,或先用 ffmpeg 确认音轨是否存在,再决定是否接入
audio输出。 - 如果更新后问题依旧存在,按照 Issue 中的提示,确认是否仍然是版本过旧导致;必要时在 Issue 下补充完整环境信息。
验证方法
用无音频的 GIF 或无音轨 MP4 连接 Load Video 的 audio 到 Video Combine,运行后:控制台应出现音频提取失败原因的提示,而 Video Combine 仍正常输出视频、工作流继续执行到后续节点;不再抛出上述 VHS failed to extract audio 异常并中断工作流。
参考来源
Kosinkadink/ComfyUI-VideoHelperSuite #153
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


