Nodes/ComfyUI-CineTimeline/CineTimeline|后处理分支
ComfyUI Node

CineTimeline|后处理分支

The Node That Runs One Upscaler Branch — the Other Two Never Execute

By bo341805sg·Created about a month ago·Updated 4 days ago· 0
CineTimeline|后处理分支
  • mode
  • rtx_frames
  • rtx_audio
  • flash_frames
  • flash_audio
  • h3_frames
  • h3_audio
  • frames
  • audio

Laziness is the feature

ComfyUI executes what the output needs. That's normally a virtue, and it's exactly the problem when you want a native/upscale/refine choice inside one workflow: three full branches would all run on every queue, and you'd pay for a FlashVSR pass and an H3 refinement pass whether or not you wanted them. The community's usual workaround is muting nodes by hand, which is fine for you and useless for anyone you hand the workflow to.

CinePostprocessSelector solves it properly. Its six media inputs are declared lazy: True, and its check_lazy_status returns only the two sockets the current mode needs. ComfyUI honours that: the branches you didn't select aren't evaluated. No upscale, no VAE re-encode, no second sampling pass. That's the mechanism the whole "skip everything when you're just previewing" behaviour in this pack rests on.

Wiring it

You give it mode - the CINE_POSTPROCESS_MODE that CinePostprocessMode produces - plus six required media inputs: rtx_frames/rtx_audio, flash_frames/flash_audio, and h3_frames/h3_audio. Two outputs, frames (IMAGE) and audio (AUDIO), which then go on to the save node.

The routing is worth reading twice, because one pair's name is a historical accident:

  • 原生输出(不放大) → the rtx_ pair
  • FlashVSR x2 → the flash_ pair
  • latent x2 H3精修 → the h3_ pair

So in a new graph you wire the first-pass decode straight into rtx_frames and rtx_audio, not an RTX upscaler. The source comments say it outright: the first pair keeps its serialized socket names so existing graphs don't break, and new production graphs connect the first-pass decode to it. Once you know that, the naming stops being confusing; until you do, it looks like a mis-wire.

Two things to get straight before you complain

All six sockets are required, so wire all three branches. Laziness saves you the execution, not the wiring - an unconnected branch is a validation failure when you queue, not a harmless dangling edge. Build the graph with all three paths and let the mode decide.

A broken branch stays invisible until you select it. If the H3 refine branch has a stale model path, nothing tells you while you're running native mode - those nodes never execute. That's a feature when it saves you an hour of upscaling, and a trap when you switch modes at 2 a.m. and get a load error instead of a segment. Test each branch once, deliberately.

What the branches are worth

This node is neutral between them, so the choice is yours. The honest version from the broader community evidence: latent x2 H3精修 is the pack's own model-side refine and keeps your generated audio untouched, which matters more than people expect - a quality pass that regenerates dialogue is not a quality pass. FlashVSR is fast and was genuinely well received on arrival, but its traction faded through 2026 while SeedVR2 took over the heavy lifts; on an already-decent H3 render the FlashVSR route is the reasonable one. And the native route is not a compromise: H3 at 864×480 and similar internal sizes is what the author's own validated runs use, so if the shot looks good there, skipping the whole finishing stack is the cheapest correct answer.

One thing to be clear about: this node forwards audio. It doesn't process it. The audio you get out is the audio that came in on the selected branch's socket, and the pack's refine design relies on that - the first pass's audio is put back into the final AV latent so the second sampling pass can only improve picture.

Installing it

Ships with the pack. Manager search CineTimeline, or:

cd ComfyUI/custom_nodes
git clone https://github.com/bo341805sg/ComfyUI-CineTimeline
# restart ComfyUI, hard-refresh the browser

The pack declares no pip dependencies; the real requirements are the H3 model files, KJNodes, minimax-h3-audio-T8 1.3.2, and whatever node packs your chosen branches use. And if you're running the INT8 ConvRot checkpoints the author treats as production, launch with --disable-dynamic-vram - the loader refuses INT8 in a DynamicVRAM process.

CategoryCineTimeline/Production

Inputs (7)

NameTypeDefaultDescription
modeCINE_POSTPROCESS_MODE
rtx_framesIMAGE
rtx_audioAUDIO
flash_framesIMAGE
flash_audioAUDIO
h3_framesIMAGE
h3_audioAUDIO

Outputs (2)

NameTypeDescription
framesIMAGE
audioAUDIO