Bernini Conditioning
Bernini's whole bag of tricks in one node
- positive
- negative
- vae
- source_video
- reference_video
- reference_images
- positive
- negative
- latent
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_videoonly → v2v (video-to-video restyle)source_video+reference_images→ rv2v (reference-guided editing)reference_imagesonly → r2v (reference-to-video, up to ~5 images)source_video+reference_video→ ads2v (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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| vae | VAE | — | |
| width | INT | 83216–8192 | — |
| height | INT | 48016–8192 | — |
| length | INT | 811–8192 | — |
| batch_size | INT | 11–4096 | — |
| source_videoopt | IMAGE | Source video to edit or restyle (v2v, rv2v). Resized to width/height and trimmed to length. | |
| reference_videoopt | IMAGE | Video to insert into the source video (ads2v). | |
| reference_imagesopt | COMFY_AUTOGROW_V3 | — | |
| ref_max_sizeopt | INT | 84816–8192 | Max size for the long edge of reference_video and reference_images. Resized with preserved aspect ratio and snapped to 16px. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| positive | CONDITIONING | — |
| negative | CONDITIONING | — |
| latent | LATENT | — |