Nodes/CGlide/Glide DLSS5 Batch
ComfyUI Node

Glide DLSS5 Batch

A folder of clips in, a folder of DLSS5 clips out

By CGlide·Created 3 months ago·Updated a day ago· 109
Glide DLSS5 Batch
  • settings
  • video_paths
  • count
◄folder►
◄codecHEVC►
◄containerMKV►
◄qualityAuto►
◄suffixDLSS5►
◄copy_audiotrue►
◄skip_donetrue►
◄output_directory►
◄name_filter►

You don't reach for this because it's clever

Glide DLSS5 is one clip at a time: drop a video on it, scrub, preview a burst at the playhead, queue the file. Good node, unusable as a finishing step, because a short film is thirty-odd files in output/ and you are not wiring thirty nodes.

So the author wrote the loop instead. Point it at a folder, hit Queue, come back to a DLSS5 subfolder where every clip has been through the engine, keeping its name plus a suffix. Generate four-to-fifteen-second chunks - as anything in the H3 class does - and that's the difference between enhancing a project and enhancing the one clip you had patience for.

What it's actually doing

It's a driver, not an upscaler. The node globs the folder, sorts by name, and for each video calls the DLSS5-Enhancer pack's own DLSS5EnhanceVideoFile.execute() - the same path the single-clip node uses, whole file, neural-render verification left on. Then it renames what the engine wrote to <clipname>_<suffix>.<container>, adding _2 / _3 if that name is taken, and never overwriting.

So a batched clip is byte-for-byte what the single-file node would have produced: same encoder, same audio mux, same verification - thirty proper renders back to back, not a cheaper batch flavour. Name order is shot order, so H3 Studio's 01_1_the-wake_00001 naming lets the batch follow your film untouched.

The inputs that matter

folder is the whole node. A plain name like Static means output/Static; a full path works if it resolves inside ComfyUI's input, output or temp folders - anything outside is refused, not read.

  • suffix (default DLSS5) - appended to each output name.
  • skip_done (on) - clips that already have a result with this suffix get skipped. That's the resume button: stop, add clips, re-queue, only the new ones run. Changing the suffix therefore re-renders everything - a clean second pass, or a good way to double your disk usage by accident.
  • name_filter - case-insensitive substring filter, for one scene out of three.
  • output_directory - empty means a DLSS5 folder inside the clips folder, originals left alone.

codec, container and quality come from the enhancer pack's media module; the defaults (HEVC in MKV, Auto) are fine, with one exception: if these clips will feed the next H3 clip's CONTINUE FROM slot, don't render them as AV1 - it's 4:2:0, and in a chain every link pays for that.

settings is a wire, not a widget: the DLSS5_SETTINGS output of a DLSS5 Settings node, handed to the engine untouched - tune the look there and the whole folder gets it. copy_audio (on) keeps the soundtrack.

Outputs are video_paths (finished paths, newline-separated) and count, rendered this run - skipped clips don't count. The real output is the folder; the console prints N rendered, N skipped, N failed.

Install

ComfyUI Manager, search CGlide (ComfyUI-CGlide), or:

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

Restart, and the nodes appear under CGlide. But this one is a shell: it ships none of the DLSS 5 engine, so you also need Blueforcer's ComfyUI-DLSS5-Enhancer, which provides the engine, the Settings node and the enhance-video node Batch drives. Install that too and make sure it loads cleanly - Batch finds the engine in sys.modules, so a pack that's present but failed to import looks exactly like one that isn't there. PyAV is required; the pack decodes video with it.

The repo README is behind the code - it still describes a four-node H3 pack; DLSS5 and Batch live in the 1.2.9 and 1.3.0 release notes instead.

What will actually bite you

Every clip is its own session. DLSS accumulates over consecutive frames, so the first frames of anything have no history to draw on - once per clip in a batch, not once per project. Stitching continuations? The joins are the softest frames in the piece.

Failures don't kill the run. A bad clip logs FAILED with the reason and the loop continues; failures are listed at the end, none of them are marked done, so re-queueing retries exactly those. Cancel works between clips, and what's finished stays finished. Names ending _DLSS5 or _DLSS5_2 are also excluded from the scan, so pointing the batch at a folder it writes into won't loop on its own results.

Troubleshooting

Glide DLSS5 needs ComfyUI-DLSS5-Enhancer installed and loaded - the engine pack is missing or failed its own import. Then full restart; a browser refresh does nothing for Python changes.

its version does not match what Glide DLSS5 expects - both packs installed, one older than the other's module layout. Update both.

No folder at ... or only reads folders inside ComfyUI's input, output or temp folders - use Static, not D:\clips.

No videos to render in ... - empty folder, name_filter matched nothing, or everything already carries that suffix.

And if a node's widget list changed shape between versions, delete and re-add it: ComfyUI matches saved widget values by position and smears old ones across new fields.

CategoryCGlide

Inputs (10)

NameTypeDefaultDescription
settingsDLSS5_SETTINGSConnect a DLSS5 Settings node.
folderSTRINGFolder with your clips. A name like Static means output/Static; a full path works if it is inside ComfyUI's input, output or temp folder.
codecCOMBOHEVC4 options: HEVC, H.264, AV1, ProRes Proxy
containerCOMBOMKV3 options: MKV, MP4, MOV
qualityCOMBOAuto4 options: Auto, Good, Best, Max
suffixSTRINGDLSS5Added to each file name: clip.mp4 -> clip_DLSS5.mkv
copy_audioBOOLEANtrue—
skip_doneBOOLEANtrueSkip clips that already have a result with this suffix in the output folder, so a stopped batch picks up where it left off.
output_directoryoptSTRINGEmpty = a DLSS5 folder inside the clips folder (e.g. output/Static/DLSS5).
name_filteroptSTRINGOnly files whose name contains this text. Empty = every video in the folder.

Outputs (2)

NameTypeDescription
video_pathsSTRING—
countINT—