Nodes/DARASK Nodes/DARASK Load Video (Upload)
ComfyUI Node

DARASK Load Video (Upload)

Load a video into ComfyUI without the VHS dependency weight

By daraskme·Created 4 months ago·Updated 3 months ago· 1
DARASK Load Video (Upload)
    • IMAGE
    • frame_count
    • video_info
    video
    force_rate0.0
    custom_width0
    custom_height0
    frame_load_cap0
    skip_first_frames0
    select_every_nth1

    Video work in ComfyUI usually starts by installing VHS (VideoHelperSuite), because it's the de-facto video loader. The DARASK Load Video (Upload) is a lean OpenCV-based alternative that does the same core job - pick a file from input/, load its frames into an IMAGE batch - with a deliberately smaller footprint. If you're running the DARASK video chain (RIFE interpolation, MMAudio, LTX workflows) you may as well use the pack's own loader and skip one dependency you'd only be loading frames with anyway.

    What it does

    Drop a video in ComfyUI/input/, pick it from the video dropdown (or use the built-in upload button), and it returns [N, H, W, 3] float32 frames. The widgets are the standard frame-surgery controls:

    • force_rate (0 = keep source FPS) - resample to a fixed frame rate.
    • custom_width / custom_height (0 = keep source) - resize; set one and the other is computed to preserve aspect.
    • frame_load_cap - max frames to load. Set this on long clips; thousands of frames can exceed memory.
    • skip_first_frames - drop leading frames.
    • select_every_nth - keep every Nth frame after skipping. This downsamples the frame count and divides loaded_fps by N, which is the detail people miss when they wonder why their timing math is off.

    Outputs: IMAGE, frame_count (the actual loaded count), and video_info - the DARASK_VIDEO_INFO dict that you feed to the DARASK Video Info node to split into scalars.

    Where it fits

    In the pack's MMAudio recipe the chain is: Load Video (Upload) → DARASK RIFE Interpolation → MMAudioSampler, with video_info → DARASK Video Info and its loaded_duration going to MMAudio's duration input so the generated audio lines up with the interpolated frame count. There's a runnable example, mmaudio_video_to_audio.json, in the pack - but it requires ComfyUI-MMAudio installed, so expect to fetch that before it loads clean.

    The honest caveats

    Two deliberate design choices you should know before you build around it. First, there is no audio output - the pack assumes MMAudio-style workflows synthesize their own sound rather than reuse the source track. If you need the original audio, keep a VHS loader around. Second, select_every_nth's interaction with the source FPS is easy to miscalculate: the loader only tells you what it loaded, so always read loaded_fps (from Video Info) rather than assuming source FPS after any filtering.

    Install is the standard pack route: Manager → search DARASK → install, restart. It's OpenCV-backed, which ComfyUI already ships, so no exotic extra pip dependencies for this node.

    CategoryDARASK

    Inputs (7)

    NameTypeDefaultDescription
    videoCOMBO1 options: (no videos in input/)
    force_rateFLOAT0.00–240Resample to this FPS (0 = keep source FPS).
    custom_widthINT00–8192Resize width (0 = source).
    custom_heightINT00–8192Resize height (0 = source).
    frame_load_capINT00–2147483647Max frames to load (0 = all).
    skip_first_framesINT00–2147483647Drop this many leading frames.
    select_every_nthINT11–100Keep every Nth frame after skipping.

    Outputs (3)

    NameTypeDescription
    IMAGEIMAGE
    frame_countINT
    video_infoDARASK_VIDEO_INFO