AU+IMG2VID Finalize (legacy alias)
Frames folder → finished video
- audio
- parent_contract
- linx
- finalize_payload
- contract
- linx
- video_path
- report
The display name says it: "legacy alias." IAMCCS_AUIMG2VID_Finalize is the old name for the pack's LTX-2 helper-module Finalize node, kept so earlier audio+image-to-video workflows keep loading. If you have an older graph with this node in it, it still works - the source literally aliases it to IAMCCS_Ltx2HelperModules_Finalize. And if you're building fresh, this is the node that turns a folder of generated frames into a deliverable video file, optionally trimmed to match your audio.
What it does
It's an output node (marked is_output_node: true), so it sits at the end of the pipeline. You give it:
frames_dir(defaultiamccs_extension_disk/final_extended) - where the extension passes wrote their PNGs.frame_rate(default 24) - output FPS, overridable byuse_planner_fpsif a planner payload carries one.filename_prefix- where the video lands in ComfyUI's output tree.crf(default 19) +pix_fmt(yuv420p/yuv444p) - the encoding quality knobs. Lower CRF = higher quality/bigger file;yuv444ppreserves more color info at a size cost.trim_to_audio(default true) - trims the final video to the length of the connectedaudio.planner_payload- the JSON from an upstream planner node; the Finalize reads thefpsandgoal1_presetout of it so the whole run shares one source of truth.
It returns finalize_payload (JSON describing the run), a contract and linx (the pack's internal supernode bookkeeping types for chaining), video_path, and a report.
The workflow shape it belongs to is the audio+image-to-video (AU/IMG2VID) path: LTX-2 generates frame chunks to disk (cheap, low-RAM), the extension module chains them, and this node stitches the folder into the final mp4 with audio. If your graph came from the older AU+IMG2VID naming era, this is the same node under the old class name.
What to watch
Two practical gotchas. First, trim_to_audio assumes you actually wired audio - if it's unconnected and the toggle is on, you'll get an unexpected result, so feed it audio or flip the toggle. Second, the frames_dir is a contract with the extension steps: if those wrote to a different folder, this node will happily combine whatever it finds - or nothing. Keep the path consistent across the pipeline.
Install
Part of IAMCCS-nodes:
- ComfyUI Manager → search "IAMCCS" → install → restart.
- Or:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
Restart ComfyUI. Requirements: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. It needs the upstream LTX-2 helper-module nodes from this same pack to produce the frames it consumes.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| frames_dir | STRING | iamccs_extension_disk/final_extended | — |
| frame_rate | FLOAT | 24.001–240 | — |
| filename_prefix | STRING | IAMCCS/Ltx2HelperModules | — |
| crf | INT | 190–51 | — |
| pix_fmt | COMBO | yuv420p | 2 options: yuv420p, yuv444p |
| trim_to_audio | BOOLEAN | true | — |
| use_planner_fps | BOOLEAN | true | — |
| audioopt | AUDIO | — | |
| planner_payloadopt | STRING | {} | — |
| parent_contractopt | IAMCCS_SUPERNODE_CONTRACT | — | |
| linxopt | IAMCCS_SUPERNODE_LINX | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| finalize_payload | STRING | — |
| contract | IAMCCS_SUPERNODE_CONTRACT | — |
| linx | IAMCCS_SUPERNODE_LINX | — |
| video_path | STRING | — |
| report | STRING | — |