Nodes/ib video slicer/ib video slicer
ComfyUI Node

ib video slicer

It's the same node as IBVideoSlicer. Seriously.

By youngfulu·Created 6 months ago·Updated 6 months ago· 0
ib video slicer
    • image
    • image_width
    • image_height
    • total_frames_count
    • slice_index
    video
    frame_modeincrement
    lag_onfalse
    loop_onfalse
    loop_every_n_frames0
    start_frame0
    end_frame-1
    skip_every_n_frames1

    If you landed here, you probably loaded a workflow that asked for a node called VideoSliceFrame and ComfyUI flagged it missing. Good news: you don't need a different tool. This is an alias - the pack registers VideoSliceFrame as a second name for the exact same class as IBVideoSlicer. In the source it's literally one line: VideoSliceFrame = IBVideoSlicer.

    One node, two names

    Both appear in the node list under the display name "ib video slicer", and both map to identical inputs and outputs: a video file in, one IMAGE frame out, plus image_width, image_height, total_frames_count, and slice_index. Everything that's true of the main node is true of this one, because there's only one class behind them - the slice list built from start_frame/end_frame/skip_every_n_frames, the increment/decrement/random frame_mode, the ±1…±3 lag_on nudge, the loop_on / loop_every_n_frames wrapping, the .mp4/.mov-only limit, and the never-cached execution that makes incremental stepping work.

    Why does it exist at all? Almost certainly legacy. Older graphs (or earlier names in this pack's own development) referenced VideoSliceFrame, and registering both names means those workflows keep loading without a rename. If a shared workflow asks for it, installing this one pack satisfies it. If you're building a new graph, use IBVideoSlicer - not because it behaves differently, but because that's the name the pack's docs and changelog talk about. Either way you get identical behavior.

    A genuinely confusing name collision

    While you're here, watch out for something adjacent: ComfyUI now ships a core node also called VideoSlice (people chain it with GetVideoComponents to pull frames out of a video). Easy to mix up when you're searching Manager or reading someone's workflow. This pack is the custom one - its nodes are IBVideoSlicer and VideoSliceFrame, and the "ib video slicer" display name is your tell that you've got the right install.

    Installing it

    Same steps as the parent node. ComfyUI Manager → search "ib video slicer", or:

    cd /path/to/ComfyUI/custom_nodes
    git clone https://github.com/youngfulu/ComfyUI-VideoSlice.git
    cd ComfyUI-VideoSlice
    pip install -r requirements.txt
    

    That's the whole dependency story - the only requirement is opencv-python>=4.8.0. Then a full restart of ComfyUI; it won't pick up a freshly cloned custom node on a refresh. Videos go in ComfyUI/input/ or come in via the "choose file to upload" button; only .mp4 and .mov are accepted.

    If something's missing

    • "Video file not found" - the video isn't under input/, or it was moved after the dropdown was built. Re-upload or refresh the file list.
    • OpenCV decode errors - corrupt file or a codec your build can't read.
    • Node still missing after install - do the full restart; a frontend refresh doesn't load new custom nodes.

    That's the whole story. There's no hidden divergence, no newer behavior hiding behind the second name - same node, second name, slightly confusing. Install the pack once and both names work.

    Categoryvideo

    Inputs (8)

    NameTypeDefaultDescription
    videoCOMBO1 options:
    frame_modeCOMBOincrement3 options: increment, decrement, random
    lag_onBOOLEANfalse
    loop_onBOOLEANfalse
    loop_every_n_framesINT00–2147483647If loop on: 0 = wrap full slice list; N>0 = wrap first N indices only.
    start_frameINT00–2147483647
    end_frameINT-1-1–2147483647
    skip_every_n_framesINT11–100001 = every frame in range; 2 = every second, etc.

    Outputs (5)

    NameTypeDescription
    imageIMAGE
    image_widthINT
    image_heightINT
    total_frames_countINT
    slice_indexINT