Skip to content

Repository files navigation

ComfyUI-VideoGate

Offline post-render video QC gate for ComfyUI. A render that finishes is not a render you can deliver. VideoGate turns "the render finished" into "the render is deliverable" — ffprobe facts, delivery profiles, black-frame / frozen-frame / loudness checks, and a PASS / WARN / FAIL verdict, all running in-graph with zero GPU and zero cloud calls.

Built for the same "safety net" job as AIVideoQualityGate, finally living where AI video actually gets rendered: inside ComfyUI.

Why

AI video pipelines ship broken clips to clients all the time: a black tail from a truncated render, frozen frames where the diffusion model stalled, a 9:16 export that's actually 16:9, silence where audio was supposed to be. Catching it happens after delivery — unless you gate it before anything leaves the machine.

ComfyUI had no offline QC-gate node pack. Image QC exists; deflicker fixers exist; VLM "describe my video" nodes exist. A plain, honest, ffprobe/ffmpeg-based gate did not. Now it does.

Nodes (category: video/Videogate)

Node What it does
VideoGate Probe ffprobe a VIDEO (or path string): container, codecs, WxH, fps, duration, frame count, aspect, audio
VideoGate Check Gate against a delivery profile + optional black / freeze / loudness checks → verdict, summary, machine-readable issues JSON
VideoGate Report Write QC reports (JSON / Markdown / CSV) next to the video or to a folder
VideoGate Enforce Branch on the verdict: forward the video, or hard-stop the workflow so nothing broken ships

All nodes accept ComfyUI's native VIDEO type and plain file-path strings, so they wire into SaveVideo/LoadVideo pipelines and into any other custom node that emits paths.

Delivery profiles

  • client_delivery — HD+ 16:9, H.264/HEVC/AV1/VP9, sane fps/duration, audio present
  • social_vertical — 9:16 (Reels/Shorts/TikTok), 720p+
  • archival_master — 1080p+, 24+ fps
  • reference_only / strict_minimal — loose structural checks

Profiles are plain Python (videogate/profiles.py) — import and extend, or PR a preset.

Requirements

  • FFmpeg on PATH (ffprobe ships with it). No torch, no GPU, no API keys. Windows: winget install ffmpeg · macOS: brew install ffmpeg · Linux: apt install ffmpeg

Install

ComfyUI Manager: search "VideoGate" → Install

Comfy Registry:

comfy node install comfyui-videogate

Manual:

git clone https://github.com/madebysaira/ComfyUI-VideoGate.git
cd ComfyUI-VideoGate && pip install -e .
# or just drop the repo folder into ComfyUI/custom_nodes/

Typical graph

LoadVideo ──▶ VideoGate Check ──▶ VideoGate Enforce ──▶ (rest of pipeline / upload)
                    │
                    └▶ VideoGate Report ──▶ report.json / report.md

The Check node's issues_json output is machine-readable — wire it into webhooks, n8n, or xyOps automations for alerting.

Development

pip install -e . && python -m pytest tests/ -v

Tests generate their own media fixtures with ffmpeg and run the real node functions — no ComfyUI install required (stubs cover the node-API surface).

License

MIT — © madebysaira

About

Offline post-render video QC gate for ComfyUI: ffprobe facts, delivery profiles, black/freeze/loudness checks, PASS/WARN/FAIL verdicts — no GPU, no cloud

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages