ComfyUI Node

Video Describe

Video Describe runs Qwen3-VL right in ComfyUI

By creativeself-kim·Created 10 months ago·Updated 6 months ago· 1
Video Describe
    • description
    • info
    video_path
    analysis_typedetailed
    fps1.0
    custom_prompt
    use_4bitfalse
    temperature0.7

    This is the node the whole pack is named after, and it's the reason to care about a repo you've otherwise never heard of. Drop a video file in, get a natural-language description out - full scene-by-scene prose, a short summary, or structured keywords - generated locally by Qwen3-VL-8B-Instruct. No API key, no cloud round-trip, nothing leaves your machine. If you've ever hand-typed descriptions for reference videos so your img2vid or storyboard pipeline could use them, this replaces that chore.

    How it works

    Under the hood it's a three-step pipeline. The node resolves your video path against ComfyUI's input/ folder, extracts frames with OpenCV at the fps you set, then feeds them to the Qwen3-VL vision-language model. The model itself is a singleton - it loads once and stays in memory, so the first run after a restart is slow and the second one is dramatically faster.

    The three preset analysis_type modes each carry their own prompt, token budget, and temperature: detailed (full prose, ~384 tokens), summary (2-3 sentences), and keywords (a structured subject/action/setting breakdown). Give it a custom_prompt and it overrides the preset entirely.

    The inputs that matter

    • video_path - filename, relative path, or absolute path. Relative paths resolve against ComfyUI/input/, which is where you should drop your footage.
    • analysis_type - detailed / summary / keywords. Start with summary to sanity-check before committing to a long run.
    • fps - frames per second to sample. 1.0 means one frame per second of video. Lower it for long videos; every extra frame is more tokens the model has to chew.
    • use_4bit - the one that decides whether this runs on your GPU at all. Off is ~16GB VRAM, on is ~8GB.
    • custom_prompt, temperature - for when you want it to look for specific things ("only describe the character's outfit changes").

    Outputs are description (the text you'll wire into a prompt builder or text encoder) and info, a diagnostic string with duration, resolution, source FPS, and what sampling/config was used. Feed info to a text preview node and you'll see exactly what it did.

    Install

    ComfyUI Manager → search ComfyUI-VideoDescription → Install, then restart. Manual:

    cd ComfyUI/custom_nodes
    git clone https://github.com/IXIWORKS-KIMJUNGHO/ComfyUI-VideoDescription
    

    The requirements file only actually needs qwen-vl-utils and opencv-python-headless beyond what ComfyUI already ships (torch, transformers, pillow, numpy are all present). If you want 4-bit mode, you also need pip install bitsandbytes.

    Model download and the gotchas

    The ~16GB Qwen3-VL-8B-Instruct checkpoint downloads automatically on first use into ComfyUI/models/video_description/. You can pre-download it so the first run isn't a surprise:

    cd ComfyUI/custom_nodes/ComfyUI-VideoDescription
    python download_models.py
    

    Where people get burned: the first run downloads 16GB and then loads the model - that's 10-30 minutes of "why is nothing happening" if you weren't expecting it. If you get a CUDA OOM, turn on use_4bit and drop fps to 0.5. Also note the README's hardware guidance: 12GB cards should run 4-bit, 24GB cards can run full FP16, and MPS is supported on Apple Silicon. Error handling is graceful - a bad path returns an error string in description rather than crashing your graph - but that's exactly what it looks like when something's wrong, so check the output before blaming the sampler downstream.

    CategoryIXIWORKS/Video

    Inputs (6)

    NameTypeDefaultDescription
    video_pathSTRING
    analysis_typeCOMBOdetailed3 options: detailed, summary, keywords
    fpsFLOAT1.00.1–30
    custom_promptoptSTRING
    use_4bitoptBOOLEANfalse
    temperatureoptFLOAT0.70–1

    Outputs (2)

    NameTypeDescription
    descriptionSTRING
    infoSTRING