Boundary Frame Splicer
Sew the interpolated frames back into the clip
- images
- interpolated_frames
- images
The extractor found the hole and the interpolator made the filler. BoundaryFrameSplicer is the node that actually repairs the video - it takes the interpolated frames and writes them back into the original batch, replacing the broken region. Without it, "extract boundaries, interpolate, splice" is just three disconnected ideas.
It's the partner to BoundaryFrameExtractor, and it has one genuinely clever behavior baked in: interpolation nodes almost always include the boundary pair in their output (a frame-before at the front, a frame-after at the back). The splicer detects and strips those automatically, keeping only the interpolated middle frames - so you don't have to manually slice the interpolator's output.
How it works
Required inputs:
images- the original video batch with the broken region.interpolated_frames- what came back from your interpolation node.
Optional, and they must match the connected extractor exactly:
enabled- on by default; when off, images pass through untouched.num_start_frames,frame_offset,num_replace- the same window definition the extractor used. The tooltips hammer this home: "Must match BoundaryFrameExtractor." Get these wrong and you'll splice the fill into the wrong location.
The stripping logic is worth knowing because it's the part people don't expect. If the interpolator returned more than two frames, it takes everything between the first and last as the filler. If it returned exactly two frames - just the boundary pair, no real interpolation happened - it averages them into a single replacement frame, which is a reasonable fallback. A single returned frame is used directly.
Output: images, the repaired batch. On iteration 0, everything passes through unchanged - same convention as the extractor.
Where it fits
Directly after your interpolation node, receiving both the original images (same batch the extractor saw) and interpolated_frames. The source's example pipeline is BoundaryFrameExtractor → RIFE/FILM → BoundaryFrameSplicer, and the parameters are meant to flow through: the extractor even outputs the exact num_start_frames/frame_offset/num_replace it used, so you can wire those into the splicer rather than retyping them. That's the reliable way to keep the two halves in agreement.
Installing it
Part of Mickmumpitz-Nodes:
cd ComfyUI/custom_nodes
git clone https://github.com/mickmumpitz/ComfyUI-Mickmumpitz-Nodes.git
or ComfyUI Manager → search "Mickmumpitz" → install → restart. No downloads from this pack.
Troubleshooting
- Filler in the wrong place - the parameters don't match the extractor. This is the #1 failure mode, and the fix is wiring the extractor's parameter outputs straight in instead of typing them.
- Wrong number of filler frames - the splicer only replaces up to
num_replaceframes, taking the first ones from the interpolator's output. If your interpolator produced more middle frames than the hole had, extras are dropped. - Batch unchanged - check
enabledand that this isn't iteration 0. On iteration 0 the splice is intentionally a no-op. - Interpolator's edge frames sneak in - if your interpolator didn't include the boundary pair, the auto-strip removes real filler. Feed it a clean pair (
frame_before/frame_after) from the extractor so the node's assumption holds.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| interpolated_frames | IMAGE | — | |
| enabledopt | BOOLEAN | true | — |
| num_start_framesopt | INT | 11–99 | Must match BoundaryFrameExtractor |
| frame_offsetopt | INT | 10–99 | Must match BoundaryFrameExtractor |
| num_replaceopt | INT | 11–99 | Must match BoundaryFrameExtractor |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |