Nodes/ComfyUI-Pixaroma/Load Video Pixaroma
ComfyUI Node

Load Video Pixaroma

Get a video into ComfyUI without the frame-count roulette

By pixaroma·Created 5 months ago·Updated 5 days ago· 359
Load Video Pixaroma
    • video_frames
    • audio
    • frame_count
    • fps
    • width
    • height
    • duration
    video
    max_frames0
    force_fps0
    skip_first_frames0
    custom_width0
    custom_height0

    Vanilla ComfyUI has no video loader. If you want to run frames through a workflow, the usual answer is a big helper pack you install for one node. Load Video Pixaroma is the lighter alternative that lives inside the Pixaroma suite, and it does something the competition often makes you build yourself: it hands you the frames and the audio and the metadata in a single go. Pick a file, watch it play right on the node to check you grabbed the right clip, hit Run, and out come the frames plus frame count, fps, width, height and duration. For most video workflows that kills the need for a separate video-info node entirely.

    It pairs with Save Mp4 Pixaroma - wire video_frames and audio straight across and you can load, process, and re-encode a clip without leaving the pack. That's the obvious loop: pull a video in, do your frame surgery, write it back out.

    How it works

    Under the hood it decodes with PyAV when that's installed (most ComfyUI setups have it), and falls back to imageio's ffmpeg-backed reader when it isn't. Audio is pulled with an ffmpeg subprocess, resolving the binary the same way Save Mp4 does - the bundled imageio-ffmpeg executable first, then any ffmpeg on your PATH. No models, no API keys, nothing to download. It's all local.

    The inputs that actually matter

    • video - pick from the dropdown or hit the upload button. That's it.
    • max_frames - 0 means load everything. This is your safety valve: long clips can eat RAM fast, and capping it keeps a 10-minute file from becoming a 15,000-frame batch.
    • skip_first_frames - trims the intro off the front. Note it trims after max_frames, so 100 max with 5 skipped gives you 95.
    • force_fps - drops or duplicates frames to hit a steady rate (60fps → 24, for instance). AI video models usually expect a fixed rate, so this is the one you'll actually set.
    • custom_width / custom_height - 0 keeps the original. Set just one and it scales proportionally; set both and it crop-to-fills that exact size without stretching, like the Resize Crop node.

    The outputs you'll care about: video_frames (the IMAGE batch), audio (wire it into Save Mp4 to keep the sound - it's empty if the file has none), plus frame_count, fps, width, height, duration for feeding latents or just checking yourself.

    Install

    Search Pixaroma in ComfyUI Manager and install, or clone it:

    cd ComfyUI/custom_nodes
    git clone https://github.com/pixaroma/ComfyUI-Pixaroma
    

    Restart ComfyUI. The pack declares no required Python dependencies - PIL and torch already come with ComfyUI - so there's no pip step for this node.

    Where people get burned

    Audio comes back empty? That's almost always ffmpeg. The node falls back to imageio's bundled binary, but if neither is available the soundtrack silently doesn't make it - install imageio-ffmpeg or a system ffmpeg and it reappears. Long clip eating memory? That's what max_frames is for; recent versions also tightened memory on big loads. And the classic Pixaroma gotcha: if the node looks broken right after an update, it's the browser cache, not the pack - hard-refresh with Ctrl+Shift+R (Cmd+Shift+R on Mac).

    Category👑 Pixaroma/🖼️ Image

    Inputs (6)

    NameTypeDefaultDescription
    videoCOMBOThe video to load from ComfyUI's input folder. Use the 'choose video to upload' button, or pick one from the dropdown (and the arrows to flip through).
    max_framesINT00–100000How many frames to load from the start of the video (the first N). 0 = load all of them. The safety valve for long clips: it never reads more than this many frames. Skip first frames then trims the front of these, so Max frames 100 with Skip 5 gives 95.
    force_fpsFLOAT00–240Force a steady frames-per-second by dropping or duplicating frames (e.g. a 60fps clip forced to 24). 0 = keep the video's original rate. AI video models usually expect a fixed rate like 24.
    skip_first_framesINT00–100000Skip this many frames from the start, like trimming an intro. 0 = start at the beginning. Trims the front of the loaded frames.
    custom_widthINT00–8192Resize frames as they load. 0 = keep the original. Set only width OR only height to scale proportionally. Set BOTH to crop-to-fill that exact size: it scales to fill the box, keeps the picture's proportions, and trims the overflow (like Resize Crop). It never stretches.
    custom_heightINT00–8192Resize frames as they load. 0 = keep the original. Set only width OR only height to scale proportionally. Set BOTH to crop-to-fill that exact size: it scales to fill the box, keeps the picture's proportions, and trims the overflow (like Resize Crop). It never stretches.

    Outputs (7)

    NameTypeDescription
    video_framesIMAGEThe video as a batch of image frames, after any trim and resize.
    audioAUDIOThe video's soundtrack (no audio is passed on if the file has none). Wire into Save Mp4 to keep the sound.
    frame_countINTHow many frames were loaded.
    fpsFLOATFrames per second of the loaded clip (matches Force FPS when set).
    widthINTFrame width in pixels, after any resize.
    heightINTFrame height in pixels, after any resize.
    durationFLOATLength of the loaded clip in seconds.