Nodes/OpenClip/OpenClip Reader
ComfyUI Node

OpenClip Reader

Read Flame .clip files straight into ComfyUI — versions, alpha and all

By allklier·Created 3 months ago·Updated 21 days ago· 0
OpenClip Reader
    • IMAGE
    • MASK
    • frame_count
    • width
    • height
    • format_version
    • version_name
    • start_frame
    • clip_path
    • clip_name
    • metadata
    • fps
    • available_versions
    clip_path
    versioncurrent
    start_frame-1
    end_frame-1
    path_from
    path_to

    Every serious VFX pipeline ends up speaking OpenClip. It's Autodesk's interchange standard - Flame, Nuke and Baselight all read and write it - and a .clip file is really a small XML manifest sitting next to a versions folder of EXR or PNG sequences. The OpenClip Reader is the node that drags one of those packages into ComfyUI so your workflow can actually touch the shot.

    What it hands you is the whole package: the image batch, the alpha, the framerate, the metadata, and a list of every version in the file. If your AI work ever feeds frames that are going back into a Flame conform, this is the front door. It's a pro-pipeline corner that's near-invisible in the usual ComfyUI discourse - compositors don't hang out on r/StableDiffusion - so you found this because you need it, not because it's hyped.

    How it works

    Three libraries doing honest work: lxml parses the .clip XML, OpenImageIO reads the EXR/PNG sequence, and a little path logic makes the whole thing portable. That last bit matters more than it sounds. A clip written on a Flame workstation stores absolute media paths, which won't exist on your machine. The reader auto-detects the remap by probing for the media directory relative to the .clip file, and if it can't figure it out, path_from / path_to let you override manually.

    Version resolution is straightforward: version defaults to current, which follows whatever version the XML flags as current. Leave start_frame and end_frame at -1 and it reads the span recorded in the clip; give them real numbers to grab a sub-range instead.

    The inputs you actually set

    • clip_path - full path to the .clip file. The only thing you must get right.
    • version - current by default. Run the node once, read available_versions, and paste in the exact name (like v002) when you need a specific one.
    • start_frame / end_frame - keep at -1 to read the whole clip; override to trim.

    The outputs, and why the strings matter

    IMAGE and MASK are the obvious ones - alpha comes through when the EXR has it, and this pack deliberately always loads it (an earlier build's off-by-default toggle produced silent black masks). But the real value of this node is the wiring. clip_path, clip_name, metadata, fps and start_frame all pipe straight into the OpenClip Writer to close the round-trip loop. version_name gives the resolved version - v002, never the literal current. And format_version is the OpenClip XML schema version (8 or 9; 9 ships with Flame 2027.1), useful for spotting clips newer than your tooling expects.

    How to install it

    Same pack as the Writer and Colour Transform nodes, so one install covers all three. Via ComfyUI Manager (search "ComfyUI_OpenClip" or add the repo URL), or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/allklier/ComfyUI_OpenClip.git
    

    Then restart ComfyUI. It needs lxml and openimageio installed into the Python environment ComfyUI actually uses - ComfyUI Manager handles this automatically from requirements.txt. opencolorio is only for the Colour Transform node, so skip it if you're just reading clips.

    Where people get burned

    • The version list looks empty until you've run it once. The reader is an output node - queue it on its own and available_versions populates (it also shows the list right in the node UI after a run).
    • Stale frames after a re-render. The reader's cache check watches the .clip file and the first frame only, not every frame. A farm that re-renders middle frames can slip past it - restart ComfyUI or touch the .clip file to force a refresh.
    • format_version vs version_name. One is the XML schema, the other is the shot version. Easy to misread side by side, easy to waste an hour on.
    CategoryOpenClip

    Inputs (6)

    NameTypeDefaultDescription
    clip_pathSTRING
    versionSTRINGcurrent
    start_frameINT-1-1–999999
    end_frameINT-1-1–999999
    path_fromSTRING
    path_toSTRING

    Outputs (13)

    NameTypeDescription
    IMAGEIMAGE
    MASKMASK
    frame_countINT
    widthINT
    heightINT
    format_versionSTRING
    version_nameSTRING
    start_frameINT
    clip_pathSTRING
    clip_nameSTRING
    metadataCLIP_METADATA
    fpsFLOAT
    available_versionsSTRING