Nodes/Comfyui-zhenzhen/zhenzhen-bernini-r-video-fal
ComfyUI Node

zhenzhen-bernini-r-video-fal

Reference-to-video and maskless editing, per clip

By T8mars·Created about a year ago·Updated a day ago· 740
zhenzhen-bernini-r-video-fal
  • video
  • reference_image1
  • reference_image2
  • reference_image3
  • reference_image4
  • reference_image5
  • video
  • video_url
  • response
promptA cinematic subtle motion shot.
modereference_to_video
video_url
reference_image_urls
api_key
negative_prompt
max_image_size848
num_frames81
frames_per_second16
num_inference_steps30
accelerationnone
aspect_ratio16:9
enable_prompt_expansionfalse
seed0
image_waybase64
video_wayupload
poll_interval6
max_poll_attempts600
skip_errorfalse

The community's favorite thing to say about Bernini is "the king is mute" - ByteDance's unified video model is the best open-weights video editing model of its era, and it ships with zero audio. The second favorite thing is "this is heavy." Editing runs at roughly double Wan 2.2's compute because your source video is part of the model input, and locals report 55-60s/it on a 3090. This node is the "don't care, rent it" answer: the same fal-ai/bernini-r endpoints, paid per clip through the Zhenzhen API, with the rendering happening on someone else's GPU.

What you get is the actual Bernini headline feature - editing with no mask. Remove an object, change a material or the weather, drop content into footage, all driven by a plain-text instruction instead of a SAM-plus-ControlNet pipeline. And in reference_to_video mode you get Bernini's other big trick: hold one character across shots from up to five reference images. If you've been on the fence about learning VACE to do this locally, this node removes the compute excuse entirely.

How it works

One node, three modes, three endpoints:

  • reference_to_videofal-ai/bernini-r/reference-to-video. Animates from up to five reference images; the aspect_ratio setting only applies here.
  • edit_videofal-ai/bernini-r/edit-video. Takes your existing video and a prompt, rewrites it in place. Needs the video input or video_url.
  • reference_edit_videofal-ai/bernini-r/reference-edit-video. Editing plus reference images, for keeping a character consistent while you change the scene.

Either way the flow is identical to every node in this pack: it POSTs to the Zhenzhen FAL proxy, polls the job every few seconds (default 6s, up to 600 attempts - a full hour of patience), then hands you back a VIDEO output and the hosted video_url.

Inputs and outputs that matter

mode is the one to pick first - it decides which of the three endpoints gets hit. Then prompt, which should be instruction-style, and for reference modes, address images explicitly: "the man from image0, wearing the jacket from image2..." Reference images go in reference_image1 through reference_image5 as IMAGE tensors, or paste URLs into reference_image_urls (one per line, up to 5 total).

  • num_frames - default 81, and the tooltip gives you the real advice: use 5 as a cheap smoke test, because frames are the main cost driver. Values snap internally to 4k+1 (the Wan-style VAE quirk).
  • frames_per_second - 16 by default; Bernini output has no audio, so this is just motion pacing.
  • max_image_size - 848 default; the knob that controls how big reference images get downscaled.
  • acceleration - none or regular; "regular" trades a little quality for speed on the hosted end.
  • seed - 0 = random, max 65535 (FAL limit). skip_error - on, a failure returns a blank video and logs instead of killing your queue.

Outputs: video (a VIDEO tensor you can feed straight into ComfyUI's video save nodes), video_url (the hosted file), and response (raw API JSON).

Installing it

It's the pack, not a lone node - every Zhenzhen node ships in one repo:

cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen

Restart ComfyUI. Or search "Comfyui-zhenzhen" in ComfyUI Manager. No model downloads, no local GPU requirements beyond running ComfyUI itself.

Common issues

Because you're renting video generation, the failure modes are mostly upstream. The README's standing advice: a 500 error is often the provider being flaky, so re-run before you troubleshoot anything else. If the node polls past its timeout, don't assume the job died - FAL jobs are pre-charged and settled after the fact, and the workshop site's async task list may show the clip finished server-side; grab it from video_url.

One Bernini-specific thing to remember: there's no audio in the output, ever. If your workflow needs sound, plan a separate audio stage (many people run Bernini output through a music/voice model). And if you're on a network that can't reach the overseas server (443 errors), you'll need a VPN with TUN mode - that's a documented quirk of this pack, not a mystery.

Categoryzhenzhen/FAL

Inputs (25)

NameTypeDefaultDescription
promptSTRINGA cinematic subtle motion shot.
modeoptCOMBOreference_to_video3 options: reference_to_video, edit_video, reference_edit_video
videooptVIDEO
video_urloptSTRING
reference_image1optIMAGE
reference_image2optIMAGE
reference_image3optIMAGE
reference_image4optIMAGE
reference_image5optIMAGE
reference_image_urlsoptSTRINGOptional reference image URLs, one per line. Up to 5 total.
api_keyoptSTRING
negative_promptoptSTRING
max_image_sizeoptINT848256–1280
num_framesoptINT815–121Snapped internally to 4k+1. Use 5 for lowest-cost smoke.
frames_per_secondoptINT164–30
num_inference_stepsoptINT301–50
accelerationoptCOMBOnone2 options: none, regular
aspect_ratiooptCOMBO16:9reference_to_video mode only.
enable_prompt_expansionoptBOOLEANfalse
seedoptINT00–655350 = random seed. FAL seed max is 65535.
image_wayoptCOMBObase642 options: base64, image_url
video_wayoptCOMBOupload2 options: upload, video_url
poll_intervaloptINT61–60
max_poll_attemptsoptINT60010–3600Default 600*6s = 3600s timeout.
skip_erroroptBOOLEANfalse

Outputs (3)

NameTypeDescription
videoVIDEO
video_urlSTRING
responseSTRING