Nodes/ComfyUI-RH-Bernini-Full/Bernini Full Reference to Video
ComfyUI Node

Bernini Full Reference to Video

Bernini's multi-reference R2V node

By RH-RunningHub·Created 3 months ago·Updated 3 months ago· 7
Bernini Full Reference to Video
  • reference_image
  • video
promptAnimate the reference image into a short smooth video.
negative_promptlow quality, blurry, distorted, text, watermark
num_frames9
fps16
width512
height512
steps4
seed5678
quality_presetstandard
accelerationwan2.2_lightx2v_4step
memory_modekeep_loaded_batch

Reference-to-video is the capability that made Bernini's reputation, and RHBerniniFullReferenceToVideo is this pack's version of it. Feed it one or more reference images and a prompt, get a video back that honors them - the headline community demo was a character held across different camera shots from multiple reference images, which is the kind of thing that used to require a closed-source API. The most-upvoted independent tester's verdict was basically "finally, near closed-source-level R2V," and that's the honest bar this sits at.

The catch is that most of the community's R2V runs use renderer-only Bernini-R. This node runs the full Bernini-Diffusers stack, planner included, so it's heavier and rarer - but it's also a genuinely different thing to have in a ComfyUI graph: the semantic planner is what lets the prompt reason about multiple references instead of just conditioning on them.

The multi-reference trick that matters

The reference_image input is an IMAGE socket, and the node's own tooltip says it: batched IMAGE inputs are passed as multiple references. So to use more than one image, you batch them (an Image Batch/VHS-style combiner, or a tensor with a batch dimension). Then the prompt addresses them by index - image0, image1, and so on, in the order of the batch. The official-style example from the Bernini community reads like: "The man from image0, wearing the black T-shirt from image2, the tropical floral shorts from image3, and the pink cat-ear headphones from image1, sits on the wooden bench in the beach sunset setting from image4..." This is instruction-style prompting, not captioning - you tell the model which reference supplies what, and that's the difference between a video that uses the images and a video that ignores them. The multi-reference encoding is chunked internally to protect VRAM, and the reference conditioning weights are set high (image guidance at 4.5) because consistency is the whole point.

Inputs and outputs

reference_image, prompt, negative_prompt, num_frames (5–129, step 4, default 9), fps (default 16), width, height (64–2048, step 16 - these set output size), steps, seed, quality_preset, acceleration, memory_mode. Output is a single VIDEO socket → SaveVideo.

Unlike the video-editing nodes, width/height aren't source-following here - there's no source video, so they always set the output size. For frame count, stay on the slider's 4n+1 rhythm; 81 frames is Bernini's native comfort zone.

Installing

Same as every node in the pack:

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]

Then the qint8 model at ComfyUI/models/diffusers/Bernini-Diffusers-qint8 (must be the full Bernini-Diffusers package - the node rejects Bernini-R paths):

cd ComfyUI/models
modelscope download --model Gluttony10/Bernini-Diffusers-qint8 --local_dir diffusers/Bernini-Diffusers-qint8

ComfyUI Manager can install the pack by title; the model download is always manual and it's a big one.

Where people get burned

  • Silent acceleration fallback. The wan2.2_lightx2v_4step setting only works if the Seko V2.0 LightX2V LoRA pair lives at ComfyUI/models/loras/Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V2.0/ (both high_noise_model and low_noise_model). Missing pair = warning in the console, no LoRAs, and your default 4 steps will look bad. Either grab the pair or run acceleration none at 25–50 steps. Note the pack deliberately doesn't auto-load other LightX2V/I2V LoRAs - it only wants this exact T2V pair, so all task nodes share one cached pipeline.
  • No audio. Same as all Bernini: mute. Plan a separate audio stage if you need sound.
  • Heaviness. Full-pipeline R2V with multiple references is a real VRAM and patience commitment. keep_loaded_batch (default) caches the pipeline between runs; low_vram_unload frees stages after each run if you're tight.
  • Reference order confusion. Batch order is reference order - swap the images and image0/image2 in your prompt stop matching what you intended. It's worth labeling your sources in the workflow.

If you came for the multi-reference consistency demo everyone's been talking about, this is the node that does it. Start with two references and an indexed prompt before you bring all five.

CategoryRunningHub/Bernini

Inputs (12)

NameTypeDefaultDescription
reference_imageIMAGEOne or more reference images. Batched IMAGE inputs are passed as multiple references.
promptSTRINGAnimate the reference image into a short smooth video.Text prompt or edit instruction.
negative_promptSTRINGlow quality, blurry, distorted, text, watermarkNegative prompt.
num_framesINT95–129Number of output frames. Higher values increase VRAM use and runtime.
fpsINT161–60Frame rate written into the returned video.
widthINT51264–2048Output width in pixels. Larger values increase VRAM use and runtime.
heightINT51264–2048Output height in pixels. Larger values increase VRAM use and runtime.
stepsINT41–100Diffusion steps.
seedINT56780–4294967295Random seed. Values are clamped to NumPy's valid 0 to 2**32-1 range before inference.
quality_presetCOMBOstandardstandard balances speed and quality; quality spends more planning time for better output.
accelerationCOMBOwan2.2_lightx2v_4stepAuto-load the Wan2.2 T2V LightX2V 4-step LoRA pair from ComfyUI/models/loras when available.
memory_modeCOMBOkeep_loaded_batchkeep_loaded_batch keeps the Bernini pipeline cached for faster consecutive jobs; low_vram_unload frees memory after each run.

Outputs (1)

NameTypeDescription
videoVIDEO