Nodes/ComfyUI-FL-BerniniR/FL Bernini-R Generate
ComfyUI Node

FL Bernini-R Generate

Eight Bernini modes in one node

By filliptm·Created 3 months ago·Updated 3 months ago· 0
FL Bernini-R Generate
  • pipeline
  • image
  • reference_images
  • preview_image
  • output_path
  • final_prompt
  • debug_json
task_typet2i
promptA cinematic portrait of a robot artist in a neon studio.
negative_prompt
video_path
width848
height480
num_frames1
fps16
num_inference_steps8
guidance_modeauto
max_image_size480
seed42
flow_shift5.0
omega_V1.25
omega_I4.50
omega_TI4.00
omega_scale0.80
eta0.50
momentum0.00
output_formatauto
unload_after_runfalse

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 - -1 for 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>.png or .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.

CategoryFL/BerniniR

Inputs (24)

NameTypeDefaultDescription
pipelineBERNINI_R_PIPELINE
task_typeCOMBOt2i8 options: t2i, i2i, t2v, v2v, mv2v, r2v, +2
promptSTRINGA cinematic portrait of a robot artist in a neon studio.
negative_promptSTRING
video_pathSTRING
widthINT848128–2048
heightINT480128–2048
num_framesINT11–241
fpsINT161–60
num_inference_stepsINT81–80
guidance_modeCOMBOauto8 options: auto, rv2v, v2v, v2v_chain, t2v, r2v_apg, +2
max_image_sizeINT480128–1280
seedINT42-1–18446744073709550000
flow_shiftFLOAT5.00–20
omega_VFLOAT1.250–10
omega_IFLOAT4.500–10
omega_TIFLOAT4.000–10
omega_scaleFLOAT0.800–2
etaFLOAT0.500–2
momentumFLOAT0.00-5–5
output_formatCOMBOauto3 options: auto, image, mp4
unload_after_runBOOLEANfalse
imageoptIMAGE
reference_imagesoptIMAGE

Outputs (4)

NameTypeDescription
preview_imageIMAGE
output_pathSTRING
final_promptSTRING
debug_jsonSTRING