Bernini Full Reference + Video to Video
Bernini's most capable (and most demanding) edit node
- video
- reference_image
- video
This is the node that combines everything else in the pack into one input stack: a source video to edit, one or more reference images to guide the result, and an instruction. It's Bernini's RV2V mode - reference-guided video editing - and it's the most capable thing this pack does, which is another way of saying the most expensive. If RHBerniniFullVideoToVideo is "restyle this clip," this node is "restyle this clip toward this look or subject," which is a genuinely different job: you can hold a character, a costume, an environment, or a style from a still image while the source video's motion carries through.
Realistically, this is the node you reach for after the others have proven themselves. The community's Bernini discussions treat reference-guided editing as the deep end - it demands the most VRAM, the longest runs, and the most careful prompting, because you're asking the model to reconcile three inputs (motion from the video, identity from the reference, direction from the prompt) instead of two. The pack runs the full Bernini-Diffusers pipeline here with its rv2v guidance mode, so the MLLM planner is the thing trying to merge all of it.
Inputs and outputs
video (VIDEO socket), reference_image (IMAGE socket - batched inputs become multiple references), prompt, negative_prompt, num_frames, fps, width, height, steps, seed, quality_preset, acceleration, memory_mode. Output: one VIDEO socket.
What you'll actually touch:
- video + reference_image - both required. Like the plain V2V node, width/height default to 0, meaning "follow the source video's dimensions"; set them explicitly only if you want to change output size.
- reference_image - batching gives you multiple references, and the prompt addresses them by index (
image0,image1…). Same rule as the R2V node: batch order is reference order. - num_frames - 5–129, step 4, default 9. Keep the 4n+1 rhythm (9, 81, 129) so the Wan VAE decodes cleanly.
- prompt - the default captures it: "Restyle the source video using the reference image while preserving motion." Tell it what the reference supplies and what to keep from the source.
- steps - 4 with LightX2V acceleration active; 25–50 without.
Installing
The same install as the rest of the pack, because they're one repo:
cd ComfyUI/custom_nodes
git clone https://github.com/RH-RunningHub/ComfyUI-RH-Bernini-Full.git
cd ComfyUI-RH-Bernini-Full
pip install -r requirements.txt
pip install --no-deps git+https://github.com/ByteDance-Seed/[email protected]
Model at ComfyUI/models/diffusers/Bernini-Diffusers-qint8:
cd ComfyUI/models
modelscope download --model Gluttony10/Bernini-Diffusers-qint8 --local_dir diffusers/Bernini-Diffusers-qint8
Full Bernini-Diffusers only - Bernini-R paths are rejected by the node's own validation. The repo's examples/ include a bernini_rv2v_test_api.json and bundled assets if you want to reproduce the reference case (copy the assets into ComfyUI/input/ first).
Troubleshooting, grounded in how it's built
- It's the slowest node in the pack, by construction. Video editing already costs ~2× a plain generation because the source video is part of the model input; adding reference conditioning and the full planner on top makes this the worst case. The first run also eats a full qint8 cold load. Set expectations accordingly and test at 9 frames.
- The acceleration fallback is quiet.
wan2.2_lightx2v_4steponly fires if the Seko V2.0 T2V LightX2V LoRA pair is inComfyUI/models/loras/Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V2.0/. Missing it means no LoRAs, no warning beyond a console line, and poor 4-step output. Grab the pair or run accelerationnonewith more steps. - VRAM strategy.
keep_loaded_batch(default) keeps the cached pipeline warm across consecutive runs - right for iterating.low_vram_unloadstages the teardown (VAE → planner/T5/vision → transformer) and clears CUDA cache after each run if you're sharing the card. - No audio, no FLF/SVI. All Bernini nodes inherit this: mute, and no first-frame/last-frame chaining. Keep it to single 8–10 second clips.
Honest advice: most people who want reference-guided editing would be served by R2V alone, and most people who want to restyle a clip are served by plain V2V. This node is for when you specifically need both - a source clip and a look you're holding it to. When that's the job, there isn't really another open node doing it.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | Source video from a ComfyUI video output. | |
| reference_image | IMAGE | One or more reference images. Batched IMAGE inputs are passed as multiple references. | |
| prompt | STRING | Restyle the source video using the reference image while preserving motion. | Text prompt or edit instruction. |
| negative_prompt | STRING | low quality, blurry, distorted, text, watermark | Negative prompt. |
| num_frames | INT | 95–129 | Number of output frames. Higher values increase VRAM use and runtime. |
| fps | INT | 161–60 | Frame rate written into the returned video. |
| width | INT | 00–2048 | 0 follows the source video width. |
| height | INT | 00–2048 | 0 follows the source video height. |
| steps | INT | 41–100 | Diffusion steps. |
| seed | INT | 67890–4294967295 | Random seed. Values are clamped to NumPy's valid 0 to 2**32-1 range before inference. |
| quality_preset | COMBO | standard | standard balances speed and quality; quality spends more planning time for better output. |
| acceleration | COMBO | wan2.2_lightx2v_4step | Auto-load the Wan2.2 T2V LightX2V 4-step LoRA pair from ComfyUI/models/loras when available. |
| memory_mode | COMBO | keep_loaded_batch | keep_loaded_batch keeps the Bernini pipeline cached for faster consecutive jobs; low_vram_unload frees memory after each run. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |