Nodes/ComfyUI/Bernini Conditioning
ComfyUI Node Runs on cloud

Bernini Conditioning

Bernini's whole bag of tricks in one node

By Comfy-Org·Created 4 years ago·Updated about 14 hours ago· 130,663
Bernini Conditioning
  • positive
  • negative
  • vae
  • source_video
  • reference_video
  • reference_images
  • positive
  • negative
  • latent
width832
height480
length81
batch_size1
ref_max_size848

BerniniConditioning is the node that finally makes maskless video editing feel normal. ByteDance's Bernini - a fine-tune of Wan 2.2, Apache 2.0 - does in-context conditioning: instead of painting a mask or wiring up a ControlNet, you hand it the footage you want edited plus your prompt, and the model figures out what to change. This node is the front door to all of that, and it's unusually smart about it: the task is inferred from which inputs you connect, so one node covers text-to-video, video-to-video, reference-to-video, reference-guided editing, and inserting an image or clip into footage.

How it works

Bernini's renderer is a Diffusion Transformer fine-tuned from Wan 2.2-A14B, and it's an "in-context" model: the source video you're editing is part of the input sequence, not a hidden prior. This node is what turns your images and video into that sequence. It VAE-encodes whatever you feed it and attaches the latents as context streams in a fixed order - source video first, then reference video, then each reference image. The task falls out of what's connected:

  • nothing extra → t2v (text-to-video)
  • source_video only → v2v (video-to-video restyle)
  • source_video + reference_imagesrv2v (reference-guided editing)
  • reference_images only → r2v (reference-to-video, up to ~5 images)
  • source_video + reference_videoads2v (insert a clip/image into footage)

Reference images are encoded at their own native aspect ratio, with the long edge capped at ref_max_size (default 848) - so you can throw in a tall portrait and a wide landscape without the model fighting the aspect ratios.

Inputs and outputs

The ones you'll set: width/height/length/batch_size (the output canvas; defaults 832×480, 81 frames), vae, and the optional stream inputs above. Outputs are positive, negative, and a ready-made latent - all three go straight into the Bernini sampler.

Where it fits

Ships with ComfyUI core (Bernini-R support landed June 2026). The Bernini checkpoint goes in your ComfyUI models folder. Two honest warnings before you get excited. First, the cost: because the source video is part of the model input, editing is roughly double Wan 2.2's compute - a 121-frame request internally processes ~242 frames, and VRAM scales the same way. Second, the KB's verdict still holds: Bernini has no audio, so any "with sound" result you see is a separate audio stage bolted on after. And the MLLM planner from the paper isn't wired into ComfyUI - you get the renderer, and you write the instructions yourself, referencing images by index ("the man from image0, wearing the black T-shirt from image2…").

Common issues

The biggest one is prompt style. This is not a captioning model - write instructions, and when using multiple references, address them by index or the model will guess wrong. Keep reference images clean and front-lit; the in-context tokens only carry what's visible. And on a 16GB card, expect to drop resolution or use a quantized checkpoint - this is a heavy one even by Wan standards.

Categorymodel/conditioning/bernini

Inputs (11)

NameTypeDefaultDescription
positiveCONDITIONING
negativeCONDITIONING
vaeVAE
widthINT83216–8192
heightINT48016–8192
lengthINT811–8192
batch_sizeINT11–4096
source_videooptIMAGESource video to edit or restyle (v2v, rv2v). Resized to width/height and trimmed to length.
reference_videooptIMAGEVideo to insert into the source video (ads2v).
reference_imagesoptCOMFY_AUTOGROW_V3
ref_max_sizeoptINT84816–8192Max size for the long edge of reference_video and reference_images. Resized with preserved aspect ratio and snapped to 16px.

Outputs (3)

NameTypeDescription
positiveCONDITIONING
negativeCONDITIONING
latentLATENT