zhenzhen-luma-ray-v3.2-video-to-video-fal
Luma Ray 3.2 video-to-video with an edit-strength slider
- video
- start_image
- video
- video_url
- response
The default prompt in this node is the pitch: "Restyle the footage as a hand-painted watercolor animation." That's video-to-video - you feed it an existing clip, it re-renders it into a different look. Where the plain Ray node makes a new shot, this one transforms one, and it's the node in the Comfyui-zhenzhen pack that most directly answers "I have footage, I want it to look like something else."
The standout control is edit_strength, a nine-step ladder that's the clearest expression of the restyle dial you'll find anywhere: adhere_1–adhere_3 (stay close to the source), flex_1–flex_3 (let it reinterpret), reimagine_1–reimagine_3 (let it go). Plus an auto_controls toggle and a controls_json field for Ray's fine-grained edit controls. It's a closed-model API call through Zhenzhen's fal proxy - per-clip credits, key in the widget, no local compute.
How it works
Source footage goes in via the video input (a VIDEO tensor) or video_url (with video_way choosing upload vs video_url). start_image / start_image_url lets you pin the first frame so the restyle doesn't drift the opening. The prompt is the restyle instruction. Then:
edit_strength- the big one: adhere → flex → reimagine, each with three notches. Start atauto(the default) if unsure; goadhere_*for a faithful recolor,reimagine_*for a real transformation.auto_controls- let Ray auto-pick edit controls vs your explicitcontrols_json.controls_json- a JSON object of Ray edit controls for precise steering; leave empty unless you know the API shape.keyframes_json/keyframe_indexes_json- timeline anchors, same as the t2v/i2v Ray node.duration- 5s or 10s.resolution- 540p / 720p / 1080p.hdr,exr_export- the specialty-output switches.
Outputs: video, video_url, response.
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 files.
Inputs worth attention (the short list)
edit_strength- the dial that decides whether you get a recolor or a reimagining.prompt- say what the new look is ("watercolor," "film noir," "GTA loading screen").video/video_url- the source; wire one.
Common issues
- Too subtle / too wild - that's
edit_strengthnot being where you want it. Recolor but keep the scene:adhere_2. Total makeover:reimagine_2. - First frame drifting - pin
start_imageso the restyle starts from where your source starts. controls_jsonerrors - it's strict JSON against a specific API schema; if you're not sure of the shape, leave it empty and useauto_controls.- The pack standard gotchas - empty key, 443/VPN-in-TUN-mode for the overseas server, vendor 500s needing a re-run, fal's pre-deducted billing, cache-only seed.
The Ray t2v node is where you make something new; this is where you change something you already have. If your workflow is "generate a base clip, then restyle," these two nodes chain together exactly the way you'd hope.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Restyle the footage as a hand-painted watercolor animation. | — |
| videoopt | VIDEO | — | |
| video_urlopt | STRING | — | |
| start_imageopt | IMAGE | — | |
| start_image_urlopt | STRING | — | |
| api_keyopt | STRING | — | |
| durationopt | COMBO | 5s | 2 options: 5s, 10s |
| resolutionopt | COMBO | 540p | 3 options: 540p, 720p, 1080p |
| edit_strengthopt | COMBO | auto | 10 options: auto, adhere_1, adhere_2, adhere_3, flex_1, flex_2, +4 |
| auto_controlsopt | BOOLEAN | false | — |
| hdropt | BOOLEAN | false | — |
| exr_exportopt | BOOLEAN | false | — |
| controls_jsonopt | STRING | Optional JSON object for Ray edit controls. | |
| keyframes_jsonopt | STRING | Optional JSON array of keyframe image URLs. | |
| keyframe_indexes_jsonopt | STRING | Optional JSON array of integer source frame indexes. | |
| image_wayopt | COMBO | base64 | 2 options: base64, image_url |
| video_wayopt | COMBO | upload | 2 options: upload, video_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 | — |