Nodes/ComfyUI-FunPack/FunPack Cut Opening
ComfyUI Node

FunPack Cut Opening

Deleting the first second your video model wasted

By digital-garbage·Created about a year ago·Updated about 13 hours ago· 20
FunPack Cut Opening
  • images
  • audio
  • images
  • audio
  • status
◄frames0►
◄fps24.00►

Almost every text-to-video clip starts before it starts. The camera is still settling, the subject is mid-blink, the first eight frames are a smear of noise resolving into a face. Everyone who generates video learns to trim it, and the usual way is to render the frames, save the MP4, open it in a video editor, and drag the in-point. FunPack Cut Opening is the same edit, done inside the graph, before the file is written.

It's the most unglamorous node in the pack and I'd bet it's one of the most used. It sits in the FunPack/Output category next to the video saver, which tells you where the author expects it: right before the write.

What it does, exactly

You feed it an images batch - the frame stack out of your video model, decode and all - plus frames, an integer for how many frames to drop off the front. It returns the same stack minus that many frames, plus the tail of the audio.

The frame count is clamped, and the clamp is the interesting bit. The node refuses to hand back an empty batch: cut is capped at total - 1, so if you ask to remove 200 frames from a 100-frame clip you get 99 frames removed and one left. That's deliberate and the author says why in a comment - an empty clip crashes somewhere deep and confusing downstream, whereas a clip that's visibly one frame long tells you exactly what happened. The status string reports it too: cut 99 of 100 frames (4.12s); asked for 200, but one frame has to stay.

Audio is trimmed by time, not by frame index. The node takes frames / fps seconds and slices that many samples off the front of the waveform, clamped to what's actually there. So fps isn't decoration - it's the conversion factor between the two streams, and getting it wrong desyncs your sound by exactly the ratio you got wrong.

The three inputs that matter

images - required, the frame batch. frames - required, default 0, meaning "keep everything", which is also the safe default for a node you drop in and haven't tuned. fps - required, default 24, and it's the number you must set to match your model and your eventual save, not a preference.

audio is the optional fourth: wire your AUDIO in and it comes out cut to match. Leave it unwired and the node passes images through with no audio output, which is fine - it doesn't invent silence.

Outputs are images, audio and status. The first two go to FunPack Save Video, or to any other saver, or to a VHS-style combine node if that's your preference. status goes nowhere and tells you everything.

Install

One repo, every node. If you already run FunPack, you have this.

cd ComfyUI/custom_nodes
git clone https://github.com/digital-garbage/ComfyUI-FunPack
cd ComfyUI-FunPack && pip install -r requirements.txt

Restart ComfyUI. ComfyUI Manager users can search ComfyUI-FunPack instead, but the README is upfront that Registry installs give you 5.0 only once it's published there - check Settings ▸ About FunPack in the /funpack/ UI to see what version you actually ended up with. The pack's own dependencies are comfy-kitchen>=0.2.32 and gguf; there's no model download and no ffmpeg requirement for this node specifically, since it's slicing tensors, not encoding them.

Common issues

Your audio drifts after the cut. Check fps against the frame rate the model actually produced and the value you'll pass to the saver. The node is doing arithmetic on your word, and it has no way to know you meant 25.

Nothing happened. frames is 0, or you're looking at status and it says nothing cut. Also worth knowing: the batch is trimmed from the front of the tensor it receives, so if an earlier node already reordered or dropped frames, you're cutting whatever is first now.

The clip is too short after cutting. That's the clamp doing its job, and status names the number you asked for versus the number it could take. Trim fewer frames, or generate more.

It's not in the node menu. FunPack v5 loads each feature as a module and drops any module that fails to load while the rest of the pack carries on - so a missing node means something in startup failed, not that you installed the wrong thing. The console log at launch says which.

CategoryFunPack/Output

Inputs (4)

NameTypeDefaultDescription
imagesIMAGE—
framesINT00–4096How many frames to cut off the front. 0 = keep everything.
fpsFLOAT24.001–240The clip's frame rate, so the sound is cut by the same time.
audiooptAUDIO—

Outputs (3)

NameTypeDescription
imagesIMAGE—
audioAUDIO—
statusSTRING—