Save Video Quick
Create Video and Save Video, collapsed into one node
- images
- audio
- video
ComfyUI core eventually grew its own native VIDEO type, along with a "Create Video" node (mux frames into a video object) and a separate "Save Video" node (write that object to disk). Two nodes for one everyday action is one extra wire and one extra thing to configure twice - JNodes_SaveVideoQuick is JNodes' answer: it fuses both steps into a single node, the way the older JNodes_SaveVideo/JNodes_SaveVideoWithOptions pair used to before ComfyUI had a native video pipeline at all.
If you're coming from those older JNodes video nodes, the biggest change here isn't the merge, it's format and codec both defaulting to auto - this node leans on ComfyUI's own video container/codec negotiation rather than the ffmpeg-shell-out approach the older nodes used, so in the common case you don't pick a container at all, you just let it figure out a sensible one.
How it works
Feed it a batch of images and a target fps, and it builds and saves a video file in one pass, named using filename_prefix (default video/ComfyUI, which drops it in a video subfolder of your output directory). format and codec at auto let ComfyUI pick based on what's available; override either if you need a specific container or encoder. save_to_output_dir toggles between the permanent output folder and the temp folder. save_metadata, save_workflow, and save_prompt_server_prompt control what gets embedded in the file for later recovery - turn any of them off if you're shipping the video somewhere you don't want your whole workflow graph riding along inside it.
Optionally, plug in audio to mux a soundtrack in directly (a real AUDIO input this time, not the old node's fragile file-path string), set bit_depth (8 or 10-bit) if your pipeline needs it, and drop arbitrary key-value pairs into additional_metadata_json if you want custom fields alongside the standard ones. It's an output node - it saves as a side effect - but it also hands back a video object, so you can keep chaining it into another node that consumes VIDEO (a preview, another save step at a different setting, whatever).
The inputs and outputs
images(IMAGE) - the frames to encode.fps(default 24) - playback rate.filename_prefix(defaultvideo/ComfyUI) - output path/name pattern.format/codec(defaultautofor both) - container and encoder; leave on auto unless you need something specific.save_to_output_dir,save_metadata,save_workflow,save_prompt_server_prompt- all on by default.audio(optional,AUDIO) - soundtrack to mux in.bit_depth(optional, 8 or 10) - color depth.additional_metadata_json(optional,STRING) - extra metadata fields.videooutput (VIDEO) - the saved video object.
How to install it
Via ComfyUI Manager: Install Custom Nodes, search "JNodes", install, restart. Or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/JaredTherriault/ComfyUI-JNodes
pip install -r ComfyUI-JNodes/requirements.txt
then restart ComfyUI. No model downloads, but real video encoding (anything beyond the simplest formats) generally still needs a working ffmpeg available to ComfyUI's environment - a fresh or minimal install missing it is the usual reason a save silently fails to produce a playable file.
Common issues & troubleshooting
auto picking a format you didn't expect. If you need a specific container for a downstream tool (say, a strict mp4 for a platform that rejects webm), set format explicitly rather than trusting auto to guess your intent - auto optimizes for "something that works," not for a particular target.
A floating panel you didn't ask for after installing. This one isn't specific to this node, but it trips up a lot of people right after installing the JNodes pack for the first time: an ImageDrawer panel appears on your canvas unprompted. It's a real feature (a media browser, not a bug), and if you don't want it: ComfyUI Settings → JNodes → Image Drawer → uncheck "Enabled," then reload.
Audio not showing up in the output. audio is optional and unconnected by default - if your video comes out silent, check that you actually wired something into it; there's no fallback audio source.
Metadata bloating file size or leaking your workflow. save_workflow and save_prompt_server_prompt are on by default, which is convenient for your own archive but means anyone who opens the file's metadata can see your whole graph. Turn them off before sharing a video externally if that's a concern.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | The images to create a video from. | |
| fps | FLOAT | 241–999 | — |
| filename_prefix | STRING | video/ComfyUI | The prefix for the file to save. This may include formatting information such as %date:yyyy-MM-dd% or %Empty Latent Image.width% to include values from nodes. |
| format | COMBO | auto | The format to save the video as. |
| codec | COMBO | auto | The codec to use for the video. |
| save_to_output_dir | BOOLEAN | true | If true save to /output. Otherwise, /temp. |
| save_metadata | BOOLEAN | true | Whether to save the video with or without metadata. |
| save_workflow | BOOLEAN | true | If this and save_metadata are true, the workflow will be saved to the metadata. |
| save_prompt_server_prompt | BOOLEAN | true | If true, save the server prompt to the metadata. |
| audioopt | AUDIO | The audio to add to the video. | |
| bit_depthopt | INT | 88–10 | Bit depth of the created video. 10-bit keeps smoother gradients with less banding, but some players and downstream nodes may not support it. |
| additional_metadata_jsonopt | STRING | A JSON string of additional metadata to save to the video's metadata, if save_metadata is true. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |