Nodes/ComfyUI-Apt_Preset/AD_Video_color_grad
ComfyUI Node

AD_Video_color_grad

Grade a video on a timeline without ever touching a latent

By cardenluo·Created 2 years ago·Updated a day ago· 331
AD_Video_color_grad
  • video
  • video
modemanual
strength1.00
exposure0.00
saturation1.00
temperature0.00
selection{}

Most of the color work you do in ComfyUI is on stills, and most of the video color work people attempt happens by re-sampling - changing a prompt and hoping the model re-renders it warmer. AD_Video_color_grad is the grown-up version of neither: it's a real color-grading pass that runs on your decoded video, so it needs no latent and no VAE, and it keeps the audio track intact. The pack's own description sums it up: drag-select a range on a track, adjust brightness and color or let it smooth automatically, and the full video with audio comes out the other side.

The node ships its own editor widget. Run it once and the body of the node becomes a viewer with a timeline track underneath: two handles let you drag out the frame range you want to affect, a playhead scrubs the clip, and the sliders - strength, exposure, saturation, temperature - live-update the current frame so you can see the grade before committing. The range you drag gets written into the selection field as a JSON string of {start, end, reference} frame numbers. In normal use you never type that by hand; the widget owns it.

The three modes

Three modes, and they're quite different animals:

  • manual - your classic exposure/saturation/temperature adjustment applied across the selected range. exposure runs −4 to +4, saturation 0–2, temperature −1 to +1 (negative cools, positive warms). This is the "this shot is underexposed and a bit green" fix.
  • brightness_smooth - the interesting one. Instead of you dialing values, the node analyzes the brightness of frames in the selection and their immediate neighbours, builds a smooth target curve, and re-grades toward it. It's an automatic flicker/fluctuation smoother for a clip where lighting pulses or a moving light keeps changing exposure. strength goes to 3.0 here, unlike the other modes' 1.0 ceiling - it's the master dial for how hard the smoothing pushes.
  • reference_match - match the selected frames' color profile to a single reference frame (which defaults to the frame just before your selection starts). This is the "make the cut not look like a cut" tool: white-balance the new segment to the frame the viewer's eye is still holding.

How it works

Under the hood it reads the video's components, grades only startend frame-by-frame (manual pushes are uniform; the smooth modes build luma and color tone curves across the range), and hands the result back as a new VIDEO with the original audio and frame rate untouched - the source frame count, fps and audio all carry over, so nothing downstream drifts out of sync. It's an output node, so it also posts a before/after preview pair back to the widget.

Gotchas

Gotchas worth knowing before you blame it:

  • The output is a new video. If strength is 0 and nothing else changed, you get a no-op copy - harmless but pointless.
  • It operates on the VIDEO object, so whatever you feed it has to already be decoded pixels. In the H3/flow workflows this pack pushes, that usually means the segment_video output of a sampler or the merge from a View_bridge_tentor. It will happily grade a Wan or any other clip too - it does not care what model made the video.
  • Corrupt or empty selection JSON raises a "invalid timeline selection" error rather than silently grading everything. If you hand-type the field, start/end/reference are the only keys it accepts.

Installing it

Install is the pack install:

git clone https://github.com/cardenluo/ComfyUI-Apt_Preset.git

then run install.bat inside the folder and restart ComfyUI. The editor does need the pack's frontend files, so a plain backend install won't show the track - which is the usual reason people report "the widget's empty," and the fix is a hard refresh plus confirming the web folder is being served.

Is it a full color suite? No. It won't do curves per channel or real scopes, and if you're serious about looks you'll still export to Resolve or DaVinci-grade in an external app. But for the 90% case - matching two generated segments so a multi-stage video doesn't visibly change color at the seams - it's exactly the node you reach for, and it keeps the whole job inside the graph.

CategoryApt_Preset/flow

Inputs (7)

NameTypeDefaultDescription
videoVIDEO
modeCOMBOmanual3 options: manual, brightness_smooth, reference_match
strengthFLOAT1.000–3
exposureFLOAT0.00-4–4
saturationFLOAT1.000–2
temperatureFLOAT0.00-1–1
selectionSTRING{}

Outputs (1)

NameTypeDescription
videoVIDEO