Nodes/ComfyUI-CGlide/Glide Video
ComfyUI Node

Glide Video

Frames and audio into one file in one ffmpeg pass

By CGlide·Created 2 months ago·Updated a day ago· 39
Glide Video
  • images
  • audio
  • filepath
fps24.00
presetH.264 (compatible)
filename_prefixglide/GlideVideo
save_outputtrue
save_metadatatrue
fallback_on_failuretrue

The stock ComfyUI video output workflow is a two-step dance: encode your frames to one file, then mux the audio on in a second pass, and hope you don't end up with a silent video and a floating metadata PNG. Glide Video does it in one ffmpeg pass - frames and audio in, one file out. It's the terminal node of the ComfyUI-CGlide pack, the thing H3 Studio and Glide Join have been feeding toward.

You feed it images from VAE Decode, and optionally audio from VAEDecodeAudio (muxed in the same pass, so there's no second file). The fps default is 24 because that's what MiniMax H3 produces - and read this carefully: fps is playback rate only. Setting it wrong changes the speed of the file, it does not add or drop frames. If your video looks fast, that's the number you touched.

The presets are the whole point

The preset dropdown is where this node earns its keep. From most compatible to most archival:

  • H.264 (compatible) - plays everywhere, largest of the three share presets.
  • H.265 (smaller) - about 35% smaller at the same look, with grain-preserving tuning.
  • AV1 (small, best quality) - GPU-encoded and near-instant, the smallest share preset with the best gradients.
  • H.264 4:4:4 10-bit - full colour, 10-bit. For chunk handoff and grading. Editors yes, phones no.
  • H.265 4:4:4 10-bit - same fidelity, appreciably smaller.
  • ProRes 422 HQ (master) - all-intra editing master, frame-accurate seeking, no generation loss.
  • FFV1 (lossless archive) - bit-exact, no colour conversion at all, large files.

The 4:4:4 and 10-bit presets are visibly better on H3 output - less flat colour, more nuance - and the author is emphatic that the 4:4:4 ones are what you want for chaining clips, because a 4:2:0 guide weakens the join (see the Glide Join article). A real gotcha: the 4:4:4 and ProRes presets don't play in a browser, so the node writes a small playable copy next to the real file just for the preview. The real file is the one in your output folder; the copy is only so you can watch it in the node.

The settings that save you

  • filename_prefix - path under the output folder; a slash makes a subfolder, and a counter is appended automatically. Defaults to glide/GlideVideo.
  • save_output (on by default) - writes the real file to the output folder. Turn it off and it writes to temp instead, so previews don't pile up in your outputs.
  • save_metadata (on by default) - embeds the prompt and workflow in the file's comment field, readable with exiftool or VLC. Drag-and-drop restore back into ComfyUI is reliable for MKV, hit-or-miss for MP4 depending on your frontend version.
  • fallback_on_failure (on by default) - if the encoder you picked fails, it retries with a more compatible preset instead of throwing away a finished render. The substitution prints loudly and the real stream shows in the preview meta line. This is the one that stops a 40-second render from evaporating over a codec hiccup.

It returns a single filepath string, and it's marked as an output node, so it doesn't clutter the graph with a dangling value.

Install and dependencies

Same install as the rest of the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/CGlide/ComfyUI-CGlide

Restart ComfyUI. The one real dependency that isn't guaranteed by ComfyUI is ffmpeg on your PATH - this node shells out to it, and nothing else in the pack uses it. PyAV is normally already present. If your encodes fail instantly with an ffmpeg-not-found error, that's the fix, not a bug report.

One honest warning from the README about long chains: each link in a "render all" project re-encodes the whole video so far, so clip 5 means clip 1's frames have been through the encoder five times. On H.264 4:4:4 at crf 12 the author can't see the loss, and FFV1 is free, but don't run a long chain on a share preset - you'd be stacking generations and handing every link a 4:2:0 guide.

CategoryCGlide

Inputs (8)

NameTypeDefaultDescription
imagesIMAGE
fpsFLOAT24.001–240Playback frame rate. MiniMax H3 is 24. Setting this wrong changes playback speed, it does not drop or add frames.
presetCOMBOH.264 (compatible)H.264 (compatible) -- Plays everywhere. Largest of the three share presets. H.265 (smaller) -- ~35% smaller than H.264 at the same look. Grain-preserving tuning applied. AV1 (small, best quality) -- GPU encoded, near-instant. Smallest share preset, best gradients. H.264 4:4:4 10-bit -- Full colour, 10-bit. For chunk handoff and grading. Editors yes, phones no. H.265 4:4:4 10-bit -- Same fidelity as the H.264 4:4:4 preset, appreciably smaller. ProRes 422 HQ (master) -- Editing master. All-intra, frame-accurate seeking, no generation loss. FFV1 (lossless archive) -- Bit-exact. No colour conversion at all. Large files.
filename_prefixSTRINGglide/GlideVideoPath under the output folder. A slash makes a subfolder. A counter is appended automatically.
save_outputBOOLEANtrueOn: writes to the output folder. Off: writes to temp, so previews do not pile up.
save_metadataBOOLEANtrueEmbed the prompt and workflow in the file's comment field. Readable with exiftool or VLC. Drag-and-drop restore into ComfyUI is reliable for MKV, hit-or-miss for MP4 depending on frontend version.
fallback_on_failureBOOLEANtrueIf the chosen encoder fails, retry with a more compatible preset instead of throwing away a finished render. The substitution is printed loudly and the real stream is shown in the preview meta line.
audiooptAUDIOFrom VAEDecodeAudio. Muxed in the same pass, so there is no second file.

Outputs (1)

NameTypeDescription
filepathSTRING