Nodes/Nifty Nodes for ComfyUI/Load & Resize Media
ComfyUI Node

Load & Resize Media

The one loader for images AND video, with resize, audio, and an is_video flag

By Stibo·Created 5 months ago·Updated 2 months ago· 9
Load & Resize Media
    • IMAGE
    • frames
    • width
    • height
    • frame_rate
    • audio
    • is_video
    • meta_bundle
    filenone
    force_frame_rate0
    resize

    The flagship of Nifty Nodes' media trio, and it earns the name "versatile." Load & Resize Media opens images, animations, and video through a single file dropdown - jpg, png, webp, gif, apng, avif, mp4, mkv, webm and friends - runs the pack's resize pipeline on whatever comes in, and then hands you an unusually complete picture of what it loaded: frame count, dimensions, frame rate, audio, a meta_bundle, and a boolean saying whether it was a video at all.

    That last flag is the clever bit. Because it's an output (is_video, True for videos and animations, False for stills), you can route a downstream graph on what kind of thing got loaded - a Nifty Input Switch on is_video can send a loaded video to a video-sampling path and a still image to an image path, all from one loader. That single boolean turns a universal loader into a universal workflow front-end.

    The inputs that matter

    • file - dropdown of your ComfyUI input folder (with an upload control), none = empty output.
    • force_frame_rate - resample to a target fps. 0 = keep the source rate. Set 24/30/60 to force it; frames get resampled on load.
    • resize - the shared resize pipeline: exact dimensions (with center-crop option), multiplier, longer/shorter side, width/height only, target megapixels, or "make divisible by N" for video models like WAN. Separate upscale/downscale methods, from nearest-exact for pixel art to lanczos for smooth upscales.

    Outputs: IMAGE (loaded frames as a batch), frames, width, height, frame_rate, audio, is_video, meta_bundle. An AUDIO output means you can even carry the soundtrack through to a video-encode stage - and if the file has no audio, you get a silent placeholder rather than an error.

    How it works under the hood

    Still images load straight through PIL. Videos and animations go through the bundled imageio-ffmpeg, which decodes frames and (if you asked) resamples them to your forced frame rate; the source fps is probed so frame_rate reports something real. If a file has audio, it's extracted (via torchaudio when available) and passed along. Failed or empty video reads return an empty batch instead of crashing the graph - a small mercy that matters when you're batch-loading a folder with a mixed bag in it.

    The one thing it can't do is decide for you - that's what is_video is for. If you want a loader restricted to a single kind, Load & Resize Image and Load & Resize Video are the narrow versions of this same node, with trimmed output sets to match.

    Install

    Nifty Nodes: ComfyUI Manager → search "Nifty Nodes", or

    cd ComfyUI/custom_nodes
    git clone https://github.com/Stibo/comfyui-nifty-nodes
    

    Restart ComfyUI, keep ComfyUI current (v3 API). Video decoding rides on the pack's imageio-ffmpeg dependency - it comes bundled, so no extra model files. Young pack, but this loader is the one I'd install it for.

    Categorynifty/media

    Inputs (3)

    NameTypeDefaultDescription
    fileCOMBOnoneImage, video or animation file to load. Select 'none' to pass through an empty output.
    force_frame_rateINT00–240Force a specific frame rate for playback and resampling. 0 = keep the original frame rate of the file.
    resizeCOMBOResize mode to apply after loading. 'off' loads the file at its original size.

    Outputs (8)

    NameTypeDescription
    IMAGEIMAGE
    framesINT
    widthINT
    heightINT
    frame_rateINT
    audioAUDIO
    is_videoBOOLEAN
    meta_bundleBUNDLE