Nodes/ComfyUI-N-Nodes/SaveVideo [πŸ…-πŸ…’πŸ…€πŸ…˜πŸ…£πŸ…”]
ComfyUI Node Runs on cloud

SaveVideo [πŸ…-πŸ…’πŸ…€πŸ…˜πŸ…£πŸ…”]

The pack's actual video writer (not the one called plain SaveVideo)

By Nuked88Β·Created 3 years agoΒ·Updated 2 years agoΒ· 237
SaveVideo [πŸ…-πŸ…’πŸ…€πŸ…˜πŸ…£πŸ…”]
  • images
    β—„METADATAβ–Ί
    β—„SaveVideofalseβ–Ί
    β—„SaveFramesfalseβ–Ί
    β—„filename_prefixvideoβ–Ί
    β—„CompressionLevel2β–Ί

    Quick disambiguation, because it'll save you a mixed-up graph: if you're looking for N-Nodes' own frame-batch-to-video writer, this [n-suite]-suffixed one is it. The plain SaveVideo class name got reclaimed at some point by ComfyUI's own built-in video node - a much smaller thing built around core's newer VIDEO object type. This node predates that and does a different, bigger job: take a batch of frame images plus a METADATA object (fps, frame count - the kind LoadVideo [n-suite] or LoadFramesFromFolder [n-suite] hand you), and write them back out as an actual video file, frame PNGs, or both.

    How it works

    Feed it your frame batch and the metadata that came with it, and flip the toggles for what you actually want written: a video file, individual frame PNGs, or both at once. There's no separate "which encoder" decision to make - you're controlling PNG compression on the frame side and letting the node handle video muxing on its own. One detail worth knowing if audio matters to you: the README is explicit that the original clip's audio track only survives the round trip if you didn't trim anything - specifically, only when images_limit and starting_frame were left at zero back on the loader that produced your frames. Trim either one and you lose the audio.

    The inputs that matter

    • images - your frame batch.
    • METADATA - the fps/frame-count object from your source loader. Required; this is what tells the node how fast to play the frames back.
    • SaveVideo (bool, default off) and SaveFrames (bool, default off) - the two independent toggles for what actually gets written to disk. Neither is on by default, so you need to flip at least one or nothing happens.
    • filename_prefix (default video) - where the output goes and what it's named.
    • CompressionLevel (0–9, default 2) - PNG compression when SaveFrames is on. Higher means smaller files, slower writes.

    It's an output node with nothing wired out the other side - its whole job is the side effect of writing files.

    Installing the pack

    • ComfyUI Manager - search "ComfyUI-N-Nodes" (also indexed as "ComfyUI-N-Suite" in some places), install, restart.
    • Manual - cd ComfyUI/custom_nodes && git clone https://github.com/Nuked88/ComfyUI-N-Nodes.git, then restart ComfyUI.

    Nothing GPU-specific to compile for the video side of the pack - that requirement only applies to the separate GPT/LLM nodes, and even there it's mostly automatic now.

    Common issues & troubleshooting

    Saving throws a moviepy.editor import error. This is a real, reported issue: N-Nodes' video pipeline imports from moviepy.editor, and moviepy 2.0 removed that submodule entirely. If your environment picked up a moviepy upgrade and saving starts throwing ModuleNotFoundError, the fix people confirmed working is hand-editing ComfyUI-N-Nodes/py/video_node_advanced.py and changing from moviepy.editor import VideoFileClip, AudioFileClip to from moviepy import VideoFileClip, AudioFileClip. Pinning moviepy<2 in the pack's environment sidesteps it without touching vendored code, if you'd rather not.

    An old workflow loads with broken or red nodes. The pack went through a full internal class-name rewrite in February 2024 specifically to avoid colliding with other packs - this node's [n-suite] suffix is a product of that. Old workflow JSON referencing the pre-rewrite names won't resolve on its own. The maintainer ships a migration tool for exactly this: drag the .json onto migrate.bat on Windows, or run python libs/migrate.py path/to/workflow.json on Linux - it writes a _migrated copy and leaves your original untouched.

    Both toggles are off and nothing saves. SaveVideo and SaveFrames both default to off - you have to explicitly turn on at least one, otherwise the node runs and produces nothing on disk.

    Audio is missing from your output video. Check whether the source loader had images_limit or starting_frame set to anything other than zero - trimming the frame range on the way in is what drops the audio track on the way out.

    CategoryN-Suite/Video

    Inputs (6)

    NameTypeDefaultDescription
    imagesIMAGEβ€”
    METADATASTRINGβ€”
    SaveVideoBOOLEANfalseβ€”
    SaveFramesBOOLEANfalseβ€”
    filename_prefixSTRINGvideoβ€”
    CompressionLevelINT20–9β€”

    Outputs (0)

    No outputs