Nodes/LNL Frame Selector/LNL Frame Selector V3
ComfyUI Node

LNL Frame Selector V3

The LNL Frame Selector You Actually Want

By dunklehohle·Created 2 years ago·Updated 6 months ago· 28
LNL Frame Selector V3
  • images
  • audio
  • Current image
  • Image Batch (in/out)
  • Frame in
  • Frame out
  • Filename
  • Frame count (rel)
  • Frame count (abs)
  • Current frame (rel)
  • Current frame (abs)
  • Frame rate (INT)
  • Frame rate (FLOAT)
  • audio
video_path
force_size
custom_width512
custom_height512
pause_on_executefalse
pause_timeout1000
fps0.0
graph_id

First, the naming trap, because it will absolutely catch you: this node's class is LNL_FrameSelectorV4 but it displays in the node menu as "LNL Frame Selector V3". Meanwhile the other node, LNL_FrameSelectorV3, is labeled "[Deprecated] ⛔️". Yes, it's backwards. The author's internal versioning lost a round to reality. What matters: V4 is the current, supported node - it's the one that fixed the old one's audio handling, and it's the one you should be using.

What it is

A video player that lives inside a ComfyUI node. Upload a video, scrub it, mark an In and Out point on the timeline, and the node hands you back that exact range as an IMAGE batch - plus the frame numbers, counts, frame rate, and trimmed audio. No leaving the graph, no opening a desktop editor just to cut 3 seconds out of a clip.

That matters more than it sounds. Video models like Wan i2v and LTX want a specific, short run of frames at a known resolution, and feeding them an entire source clip is how you burn VRAM on junk frames. (The KB's LTX notes even flag base resolution like 512x512 as the sweet spot for the small models.) This node is the trimming step that turns "random video I downloaded" into "exactly the frames I want to animate."

How it works

Front end and back end. The web player (web/VideoPlayer) handles playback, stepping, and the scrubber with In (green) and Out (red) markers. When you hit execute, the back end reads your current frame, In, Out, and stride straight off the node's widgets, then decodes frames with OpenCV's VideoCapture into a tensor and slices the range out. Audio is handled with ffmpeg, courtesy of the bundled imageio-ffmpeg binary - no system ffmpeg required.

The inputs that matter

You'll mostly touch three things:

  • video_path - a dropdown pre-scanned from your ComfyUI/input folder (mp4, webm, mkv). Defaults to the first video it finds.
  • force_size - resizes output frames to a preset (512x512, 512x?, custom, etc.) so the batch matches what your downstream model expects.
  • images - an optional IMAGE batch input. Connect one and the file picker disappears; your batch becomes the timeline. Comes with an fps override, since batches don't carry a frame rate on their own.

pause_on_execute (+ pause_timeout) is worth a look too: it pauses the workflow after you set your trim so you can confirm before committing a long generation.

The outputs that matter

The one you're building around is Image Batch (in/out) - the trimmed range, wired straight into a sampler or a video pipeline. Current image gives you the single frame you're parked on. Then the metadata: Frame in / Frame out, Frame count (rel) (frames in your selection) and (abs) (total in the source), Current frame relative and absolute, Filename, and frame rate as both Frame rate (INT) and a precise Frame rate (FLOAT). Finally audio - and here's V4's upgrade: it's native ComfyUI AUDIO, properly aligned to the video timeline, padded or cropped to match duration, and trimmed to your In/Out range. The old node's audio was VHS_AUDIO, which only made sense if you'd also installed VideoHelperSuite. V4 works in a plain ComfyUI install.

Install

Search Manager for LNL Frame Selector, or:

cd ComfyUI/custom_nodes
git clone https://github.com/latenightlabs/ComfyUI-LNL.git
cd ComfyUI-LNL
pip install -r requirements.txt

Dependencies are modest - opencv-python~=4.12.0, imageio-ffmpeg, Pillow - and there are no model files to download. It's a utility, not a pipeline.

Troubleshooting

The classic gotcha is in the README: numeric outputs read 0 until the node is connected (directly or transitively) to an output node - ComfyUI doesn't compute value outputs that aren't consumed. So wire something downstream before you panic about zeroes. Audio comes back silent if the source has no audio track; that's normal, not a bug. And because OpenCV is pinned at 4.12, if you've force-upgraded it elsewhere, frame decoding can silently break - reinstall the pinned version to fix it.

One honest caveat: this pack is niche, with almost no Reddit footprint, so you won't find a wall of community write-ups vouching for it. It's a solid, self-contained tool that fills a real gap - trim frames without leaving the graph. Just remember to grab the node that says V3.

CategoryLNL

Inputs (10)

NameTypeDefaultDescription
video_pathSTRING
force_sizeCOMBO12 options: Disabled, Custom Height, Custom Width, Custom, 256x?, ?x256, +6
custom_widthINT5120–8192
custom_heightINT5120–8192
pause_on_executeBOOLEANfalse
pause_timeoutINT10001–9999999
imagesoptIMAGE
audiooptAUDIO
fpsoptFLOAT0.00–240
graph_idoptSTRING

Outputs (12)

NameTypeDescription
Current imageIMAGE
Image Batch (in/out)IMAGE
Frame inINT
Frame outINT
FilenameSTRING
Frame count (rel)INT
Frame count (abs)INT
Current frame (rel)INT
Current frame (abs)INT
Frame rate (INT)INT
Frame rate (FLOAT)FLOAT
audioAUDIO