Ffmpeg load video – broken mask.

在 ComfyUI 中,使用 VideoHelperSuite 的 Load Video (Ffmpeg)节点加载一段透明视频(例如抠像后的人物),再通过 Image Composite Masked 节点将其合成到背景视频上时, Load Video 节点输出的 mask 结果是 64x64 的纯

Ffmpeg load video - broken mask.

Ffmpeg load video – broken mask.

快速结论:使用 Load Video (ffmpeg) 节点加载带有透明通道(alpha)的视频时,如果视频编码为 VP9,则默认的 ffmpeg 解码器无法正确提取透明度,导致生成的 mask 为 64×64 的纯色方块。可优先尝试将视频重新编码为 ProRes 4444(或 4444xq)格式。

问题场景

在 ComfyUI 中,使用 VideoHelperSuite 的 Load Video(Ffmpeg)节点加载一段透明视频(例如抠像后的人物),再通过 Image Composite Masked 节点将其合成到背景视频上时,Load Video 节点输出的 mask 结果是 64×64 的纯色方形,而非正确的透明度信息。

报错原文

mask from ffmpeg video loader returns plain 64x64 square and not the transparency

(输出图像合成结果错误,无显性程序崩溃报错)

原因分析

这是一个已知的 ffmpeg 长期缺陷:默认的 VP9 解码器(vp9)不支持透明度(alpha channel)提取。正确提取透明度需要强制使用 libvpx-vp9 解码器,但 VideoHelperSuite 的 Load Video 节点目前并未实现该选项(需要在检测到 VP9 视频后增加第三遍解码流程,尚未实施)。

用户通过 VideoCombine 节点输出的 webm 格式视频默认编码即为 VP9(即使设置了 yuva420p 像素格式),因此导致透明度丢失。

环境排查

  • 视频编码格式:确认透明视频是否为 VP9(webm 格式通常为 VP9)。
  • VideoCombine 输出设置:检查输出格式是否为 webm 或其它 VP9 容器。
  • ffmpeg 版本:虽然并非直接原因,但不同 ffmpeg 版本对 VP9 透明度的解码支持可能有差异。

解决步骤

  1. 将透明视频转换为 ProRes 4444 或 4444xq 格式(可优先尝试):
    在 ComfyUI 的 VideoCombine 节点中,将输出格式设置为 ProRes,并将 profile 设置为 44444444xq(两者均可正确处理透明度)。
  2. 重新使用 Load Video 节点加载新生成的 ProRes 视频,mask 输出即可正常包含透明度信息。
  3. 替代方案(如果无法更改输出格式):使用外部工具(如 ffmpeg 命令行)将 VP9 webm 转码为 ProRes 4444,再导入 ComfyUI。

验证方法

加载转换后的 ProRes 视频后,检查 Load Video 节点输出的 mask 连接口是否能正确显示透明度区域(而非 64×64 纯色方块),然后将合成结果通过 Preview ImageSave Image 节点查看最终合成效果,确认人物透明边缘正确与背景融合。

参考来源

Kosinkadink/ComfyUI-VideoHelperSuite #502

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 8111

发表回复

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