IAMCCS Cine Shotboard Final Frame Trim
Sweeping the ghost frames off the end of your shot before it's saved
- video
- frames
- audio
- cine_linx
- video
- frames
- audio
- cine_linx
- report
LTX video generation has a dirty little secret: pipelines that pad a latent to hit a duration target often leave one or more garbage tail frames after decode - frozen, chroma-shifted frames that look fine in the latent and ruin the shot when you render it out. IAMCCS Cine Shotboard Final Frame Trim is the pack's cleanup pass: it sits between your final decode and the SaveVideo node and trims those tail frames off video, frames, and audio in one shot.
It's the output-side bookend to IAMCCS Cine Latent Duration Crop (which trims in latent space). This one works on the decoded VIDEO, IMAGE, and AUDIO so that whatever collector or editor picks up the shot gets exactly the frames you intended.
How it works
The node has a trim_policy with three modes:
auto_from_cine_linx(default) - reads the intended tail-trim from thecine_linxplan bus. This is the shotboard-integrated mode: the plan says "1 tail frame," and the trim obeys it. It also checks the plan's target frame count and will crop to that length if the rendered output overshot.force_value- ignore the plan, usetail_trim_framesdirectly.off- pass everything through untouched.
tail_trim_frames (default 1) is the fallback/override count, and trim_embedded_video_audio (default yes) tells it to slice the audio track embedded in the video object by the same amount so lipsync and picture stay aligned.
It handles video, frames, and audio inputs independently - you can feed any combination, and it trims what's present. Outputs mirror the inputs plus cine_linx (with the trim recorded in metadata) and a report that's refreshingly honest about what it did and didn't change.
The inputs that matter
trim_policy- pickauto_from_cine_linxif you're in a shotboard workflow,force_valueif you just want "always cut N frames."tail_trim_frames- 1 is usually right; the pack's own docs describe these as chroma-offset tail frames, and there's typically only one.
The optional cine_linx is how auto_from_cine_linx learns the plan. Feed it. Without it, auto mode falls back to tail_trim_frames.
Install
Part of IAMCCS-nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/IAMCCS/IAMCCS-nodes.git
or Manager → search IAMCCS. README floor: ComfyUI ≥ 0.3.0, Python ≥ 3.12, Torch ≥ 2.8. It expects the newer VIDEO type that modern ComfyUI uses for video objects - if your pipeline is still on plain image frames, feed the frames input instead.
Where people get burned
- Trimming audio you wanted.
trim_embedded_video_audiodefaults toyes. If your shot intentionally runs past the picture (tail-out dialogue), you'll cut it. The node does also pass through a separateaudioinput untrimmed - so keep your master audio on theaudiopin and let embedded audio be handled separately. - Auto mode with no plan. Without a
cine_linx,auto_from_cine_linxsilently behaves likeforce_valuewith the default 1. If you expected the plan to decide and it wasn't connected, you might trim more or less than intended - read thereport(policy,effective_tail_trim_frames). - It's a fixer, not a cause. If every shot comes out with tails, the real problem is upstream duration math (the 8n+1 rounding and padding). This node patches the symptom reliably, which is fine, but don't stop hunting the source.
- Zero search impressions, one-author tooling. Safe leaf node, but only meaningful if you actually see garbage tail frames - skip it if your shots render clean.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| trim_policy | COMBO | auto_from_cine_linx | 3 options: auto_from_cine_linx, force_value, off |
| tail_trim_frames | INT | 10–24 | — |
| trim_embedded_video_audio | COMBO | yes | 2 options: yes, no |
| videoopt | VIDEO | — | |
| framesopt | IMAGE | — | |
| audioopt | AUDIO | — | |
| cine_linxopt | IAMCCS_SUPERNODE_LINX | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| frames | IMAGE | — |
| audio | AUDIO | — |
| cine_linx | IAMCCS_SUPERNODE_LINX | — |
| report | STRING | — |