OpenClip Reader
Read Flame .clip files straight into ComfyUI — versions, alpha and all
- IMAGE
- MASK
- frame_count
- width
- height
- format_version
- version_name
- start_frame
- clip_path
- clip_name
- metadata
- fps
- available_versions
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.clipfile. The only thing you must get right.version-currentby default. Run the node once, readavailable_versions, and paste in the exact name (likev002) 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_versionspopulates (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
.clipfile and the first frame only, not every frame. A farm that re-renders middle frames can slip past it - restart ComfyUI or touch the.clipfile to force a refresh. format_versionvsversion_name. One is the XML schema, the other is the shot version. Easy to misread side by side, easy to waste an hour on.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| clip_path | STRING | — | |
| version | STRING | current | — |
| start_frame | INT | -1-1–999999 | — |
| end_frame | INT | -1-1–999999 | — |
| path_from | STRING | — | |
| path_to | STRING | — |
Outputs (13)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| MASK | MASK | — |
| frame_count | INT | — |
| width | INT | — |
| height | INT | — |
| format_version | STRING | — |
| version_name | STRING | — |
| start_frame | INT | — |
| clip_path | STRING | — |
| clip_name | STRING | — |
| metadata | CLIP_METADATA | — |
| fps | FLOAT | — |
| available_versions | STRING | — |