zhenzhen-luma-ray-v3.2-fal
The cinematic-camera node, with keyframes and HDR
- image
- end_image
- reference_image1
- reference_image2
- reference_image3
- reference_image4
- video
- video_url
- response
Luma Ray is the model people reach for when they want a shot rather than a clip - smooth camera moves, coherent physics, that low-light cinematic feel. The default prompt in this node says it all: "A smooth cinematic camera move." And the v3.2 wrapper in the Comfyui-zhenzhen pack is the most fully-featured video node in the whole pack, because it exposes things most API wrappers hide: a first frame and an end frame, up to four reference images, keyframe JSON inputs, HDR, EXR export, and a loop toggle.
If you want Ray to do the thing it's famous for, this is the node. Closed model, no local weights, per-call credits through Zhenzhen's fal proxy, key in the widget - but the feature list is why you'd pick it over the simpler wrappers.
How it works
mode is text_to_video or image_to_video. For i2v you can wire image (start frame), end_image (target final frame - the "first and last frame" trick that gives you a directed transition), and up to four reference_image1–4 for subject consistency. The more advanced controls:
keyframes_json/keyframe_indexes_json- JSON arrays of image URLs and integer frame indexes, letting you pin specific moments in the timeline to specific frames. This is the power feature; it's also the one most people never touch.hdr- HDR video output on/off.exr_export- export EXR frames (for post-grading workflows).loop- seamless-loop video on/off.duration- 5s or 10s.resolution- 540p / 720p / 1080p.aspect_ratio- 3:4, 4:3, 1:1, 9:16, 16:9, 21:9.
Outputs: video (VIDEO), video_url, response.
Inputs that matter (the short list)
prompt- describe the shot: subject, camera move, light. Ray is prompt-responsive about camera language.image+end_imagefor i2v - the first/last-frame pair is where Ray earns its cinematic reputation.hdrandloop- the two "is this a specialty render?" switches; both cost more.
Installing it
Manager → search Comfyui-zhenzhen → install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Restart, paste your api_key into the widget. No model downloads.
Common issues
- Keyframes doing nothing - the JSON fields expect URLs, and
keyframe_indexes_jsonneeds to line up withkeyframes_json(one index per keyframe). A mismatched pair silently no-ops. - End frame ignored -
end_imageonly applies in image_to_video mode; text mode has no timeline anchors. - HDR/EXR surprises - these change the container/format and the bill. Turn them on only when the deliverable needs them.
- The pack standard gotchas - empty key, 443/VPN-in-TUN-mode for the overseas API, vendor 500s needing a re-run, fal's pre-deducted billing, cache-only seed.
If you just need "a video of X," there are cheaper nodes in this pack. If you need a crane shot that ends on a specific frame, this is the one you'll actually reach for.
Inputs (25)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A smooth cinematic camera move. | — |
| modeopt | COMBO | text_to_video | 2 options: text_to_video, image_to_video |
| imageopt | IMAGE | — | |
| end_imageopt | IMAGE | — | |
| reference_image1opt | IMAGE | — | |
| reference_image2opt | IMAGE | — | |
| reference_image3opt | IMAGE | — | |
| reference_image4opt | IMAGE | — | |
| image_urlopt | STRING | — | |
| end_image_urlopt | STRING | — | |
| reference_image_urlsopt | STRING | Optional reference image URLs, one per line. Max 4. | |
| api_keyopt | STRING | — | |
| durationopt | COMBO | 5s | 2 options: 5s, 10s |
| resolutionopt | COMBO | 540p | 3 options: 540p, 720p, 1080p |
| aspect_ratioopt | COMBO | 16:9 | 6 options: 3:4, 4:3, 1:1, 9:16, 16:9, 21:9 |
| hdropt | BOOLEAN | false | — |
| exr_exportopt | BOOLEAN | false | — |
| loopopt | BOOLEAN | false | — |
| keyframes_jsonopt | STRING | Optional JSON array of keyframe image URLs. | |
| keyframe_indexes_jsonopt | STRING | Optional JSON array of integer frame indexes. | |
| image_wayopt | COMBO | base64 | 2 options: base64, image_url |
| poll_intervalopt | INT | 61–60 | — |
| max_poll_attemptsopt | INT | 60010–3600 | Default 600*6s = 3600s timeout. |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | Execution seed for ComfyUI cache control. Fixed reuses the cached result; randomize/increment/decrement requests a new run. This compatibility seed is not sent to APIs that do not expose a native seed parameter. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| response | STRING | — |