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

Bernini Full Video to Video

Maskless video editing with the full Bernini pipeline — no SAM, no ControlNet

By RH-RunningHub·Created 3 months ago·Updated 3 months ago· 7
Bernini Full Video to Video
  • video
  • video
promptRestyle the source video while preserving motion.
negative_promptlow quality, blurry, distorted, text, watermark
num_frames9
fps16
width0
height0
steps4
seed4567
quality_presetstandard
accelerationwan2.2_lightx2v_4step
memory_modekeep_loaded_batch

This is the node the pack is actually named for. RHBerniniFullVideoToVideo takes a source video and an instruction - "restyle the source video while preserving motion" is the default, and it's the right shape - and returns an edited video with no mask, no SAM pipeline, no ControlNet in front of it. That's Bernini's whole party trick, and the thing that made it the community's pick for video editing over VACE: you type what you want changed and the model figures out what to touch. The canonical demo is object removal - a hang glider erased from a paragliding clip so the man looks like he's flying unaided - which Bernini handles directly from the prompt.

There's a real catch to set expectations, and it's structural, not a bug. Editing video with Bernini costs roughly double the compute of a plain Wan 2.2 generation of the same length, because the source video you're editing is itself part of the model input sequence. Same story for VRAM. Kijai's explanation from the release threads is the one to remember: editing 121 frames internally processes about 242. This node, running the full model rather than renderer-only Bernini-R, is at the heavy end of that. Plan for a slow, hot run.

Inputs and outputs

Required inputs: video (a VIDEO socket - from LoadVideo, a SaveVideo-style source, or another video node's output), prompt, negative_prompt, num_frames, fps, width, height, steps, seed, quality_preset, acceleration, memory_mode.

The few that matter:

  • video - feeds in and, notably, drives the output size. If width and height are both left at 0 (their defaults here), the output follows the source video's dimensions. This is different from the image and t2v nodes, where width/height always set the size.
  • num_frames - default 9, 5–129, step 4. Keep the 4n+1 rhythm (9, 81, 129) so the Wan VAE decodes cleanly - the model's native context is 81 frames, and that's the sweet spot.
  • prompt - instruction-style, and it should say what to change and what to keep. "Remove the hang glider, harness and white bars so it appears like the man is flying" is the shape Bernini is best at.
  • steps - 4 with LightX2V LoRAs present (the default fast setting), 25–50 without.

Output is one VIDEO socket → SaveVideo.

Installing

Identical to the rest of 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]

Model at ComfyUI/models/diffusers/Bernini-Diffusers-qint8:

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

The pack only runs the full Bernini-Diffusers model - a Bernini-R directory will be rejected by the node's own validation. ComfyUI Manager finds the pack by its title if you'd rather install that way.

Issues you'll actually hit

  • The heavy-edit tax. Source video in, edited video out, roughly 2× a plain generation's compute. memory_mode: low_vram_unload releases the VAE, planner, T5, and transformer in order after each run and clears CUDA cache - use it if you're sharing VRAM with anything else. keep_loaded_batch (default) is the right choice when you're iterating, since the second run skips the cold load.
  • Silent acceleration fallback. If the Seko V2.0 LightX2V LoRA pair isn't under ComfyUI/models/loras, the wan2.2_lightx2v_4step setting just logs and runs without LoRAs. Four steps with no LoRAs is a bad look. Either fetch Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V2.0 (high + low noise) or switch acceleration to none and raise steps.
  • No audio, no first-frame/last-frame. Bernini doesn't do audio, and it doesn't support FLF chaining or SVI-style extension. If your project depends on long-form stitching, plain Wan 2.2 is the safer base.
  • Verify your workflow source. The pack ships example API JSONs that assume bundled assets copied into ComfyUI/input/ (e.g. bernini_v2v_source_case1.mp4) - worth copying if you're testing with the repo's own examples.

Start small. A 9-frame edit at 512² tells you everything about whether your machine can handle the 81-frame job you actually want, and it burns a lot less GPU than finding out the hard way.

CategoryRunningHub/Bernini

Inputs (12)

NameTypeDefaultDescription
videoVIDEOSource video from a ComfyUI video output.
promptSTRINGRestyle the source video while preserving motion.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.
widthINT00–20480 follows the source video width.
heightINT00–20480 follows the source video height.
stepsINT41–100Diffusion steps.
seedINT45670–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