FL Bernini-R Generate
Eight Bernini modes in one node
- pipeline
- image
- reference_images
- preview_image
- output_path
- final_prompt
- debug_json
This is the node that actually makes video. FL Bernini-R Generate is the workhorse of the pack: point it at a pipeline from FL Bernini-R Loader, pick a task type, write a prompt, and it runs Bernini-R in one of eight modes - text-to-image, image-to-image, text-to-video, video-to-video, multi-view video, reference-to-video, reference-plus-video, and an ads-oriented mode. That's the whole point of Bernini: ByteDance's unified video generation and editing model, built on top of Wan 2.2, whose headline trick is editing video from an instruction with no mask, no ControlNet, and no SAM pipeline in front of it.
The mode you pick decides what inputs it wants, and the node checks before it runs. t2i and t2v need just a prompt. i2i needs an image (a ComfyUI image batch into the optional input). v2v, mv2v, and ads2v need a video_path pointing at a clip on disk. r2v needs reference_images - up to five of them. rv2v needs both. The node's own widget shows you each mode's requirements as you switch, and live progress - current stage, message, progress bar - streams onto the node while it works.
If the mode's inputs aren't there, you get a clear error: "i2i requires an image input", "v2v requires video_path", and so on. No mystery failures.
The inputs that matter
You'll set maybe six of these per render:
- task_type -
t2i,i2i,t2v,v2v,mv2v,r2v,rv2v,ads2v - prompt - instruction-style, not caption-style. For reference modes, address the images by index: "the man from image0, wearing the shirt from image2, keep the scene from image4". This matters more here than with any other model you've used.
- width / height - 128–2048 in steps of 16, defaulting to 848×480. Start small; this model is heavy.
- num_frames - 1–241; image modes force it to 1. Bernini inherits Wan's 81-frame native context, so think in 5–10 second clips, not scenes.
- num_inference_steps - 8 by default, which is a smoke-test number. Crank it for quality once things work.
- seed -
-1for a random seed, or lock it for a repeatable render.
The rest - guidance_mode, flow_shift, the omega_V / omega_I / omega_TI / omega_scale knobs, eta, momentum - are the Bernini sampler controls. guidance_mode: auto picks a sensible guidance mode per task (t2i/t2v map to t2v, r2v to r2v_apg, and so on). Leave the omegas and flow shift alone until a render looks wrong; the defaults are the official pipeline's.
What comes out
Four outputs:
- preview_image - the generated image, or the first frame of the video, so you can see it in the graph and save it with a standard preview node
- output_path - where the file landed,
ComfyUI/output/BerniniR/bernini_<task>_<hex>.pngor.mp4 - final_prompt - your prompt echoed back
- debug_json - resolved guidance mode, seed, steps, dimensions, and model path, which is genuinely handy when something looks off
output_format of auto saves an MP4 for video tasks and a PNG for image tasks; you can force either.
Install and first run
ComfyUI Manager: search ComfyUI-FL-BerniniR. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI-FL-BerniniR.git
cd ComfyUI-FL-BerniniR
pip install -r requirements.txt
Restart, load the model, and smoke-test with t2i at 128×128, one frame, one step - that's literally what the pack's own validation does. Then scale up.
Troubleshooting
Three things will bite you. First, VRAM and time: editing modes run roughly double the compute of an equivalent Wan 2.2 generation, because the source video is part of the model's input - a "long render" here is a long render. Second, there's no audio. Bernini is famously mute; if you need sound, run a separate audio stage over the result. Third, memory management: the model stays in VRAM after rendering. Set unload_after_run on this node or wire FL Bernini-R Unload after it, or your next workflow inherits a card full of Bernini.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| pipeline | BERNINI_R_PIPELINE | — | |
| task_type | COMBO | t2i | 8 options: t2i, i2i, t2v, v2v, mv2v, r2v, +2 |
| prompt | STRING | A cinematic portrait of a robot artist in a neon studio. | — |
| negative_prompt | STRING | — | |
| video_path | STRING | — | |
| width | INT | 848128–2048 | — |
| height | INT | 480128–2048 | — |
| num_frames | INT | 11–241 | — |
| fps | INT | 161–60 | — |
| num_inference_steps | INT | 81–80 | — |
| guidance_mode | COMBO | auto | 8 options: auto, rv2v, v2v, v2v_chain, t2v, r2v_apg, +2 |
| max_image_size | INT | 480128–1280 | — |
| seed | INT | 42-1–18446744073709550000 | — |
| flow_shift | FLOAT | 5.00–20 | — |
| omega_V | FLOAT | 1.250–10 | — |
| omega_I | FLOAT | 4.500–10 | — |
| omega_TI | FLOAT | 4.000–10 | — |
| omega_scale | FLOAT | 0.800–2 | — |
| eta | FLOAT | 0.500–2 | — |
| momentum | FLOAT | 0.00-5–5 | — |
| output_format | COMBO | auto | 3 options: auto, image, mp4 |
| unload_after_run | BOOLEAN | false | — |
| imageopt | IMAGE | — | |
| reference_imagesopt | IMAGE | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| preview_image | IMAGE | — |
| output_path | STRING | — |
| final_prompt | STRING | — |
| debug_json | STRING | — |