Bernini Full Text to Video
The T2V node that most people never get to
- video
Text-to-video is the least famous thing Bernini does, and this node is the least famous way to do it. That's not a knock on the node - it's because Bernini is the community's favorite video editing model, so its T2V mode is the practice lane, not the headline. Still, if you're going to run the full ComfyUI-RH-Bernini-Full pack, this is the node that demonstrates the whole pipeline on a task with no source media: no masks, no references, no edits to preserve - just a prompt and a num_frames slider, and you learn exactly how fast your machine is at the renderer.
Here's the context that makes this interesting. Nearly every Bernini workflow out there runs the renderer-only Bernini-R through Kijai's integration. This pack runs the full Bernini-Diffusers stack - the 7B MLLM semantic planner included - which the community mostly writes off as "the half of the paper nobody could get anything out of." Text-to-video is where you can actually judge that claim for yourself, because it's pure generation with no editing to muddy the comparison.
What you set
Inputs: prompt, negative_prompt, num_frames, fps, width, height, steps, seed, quality_preset, acceleration, memory_mode. The video-specific ones:
- num_frames - default 9, range 5–129, and the step is 4 for a reason: the Wan VAE compresses time ~4×, so frame counts that decode cleanly are 4n+1 (9, 81, 129). Stay on the slider's rhythm. 81 frames at 16 fps is the classic 5-second clip and Bernini's comfort zone - it's where it beats plain Wan 2.2 on the repetition problem.
- fps - just the frame rate written into the returned video (1–60, default 16). The model doesn't care; the file does.
- width / height - 64–2048, step 16. 512² is a safe start; 848×480 is what the repo's own example uses.
The rest are the pack-wide knobs: steps (4 with LightX2V acceleration, 50 in the provided examples without), quality_preset (standard/quality - more planner time), acceleration, and memory_mode.
Output is a standard VIDEO socket, so it drops straight into SaveVideo (or a video preview node).
Installing and first run
Same install as every node in this pack - see the pack's Text to Image page for the full walkthrough, but the short version:
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]
plus the qint8 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 --no-deps on VeOmni is non-negotiable - it's a real dependency here, but letting it pull its own deps can replace your torch and torchvision.
The gotchas that will actually bite
- The acceleration fallback is silent. The node only auto-loads one specific LightX2V LoRA pair:
ComfyUI/models/loras/Wan2.2-T2V-A14B-4steps-lora-rank64-Seko-V2.0/high_noise_model.safetensorsand itslow_noise_model.safetensorssibling. Missing pair = thewan2.2_lightx2v_4stepsetting quietly runs without LoRAs, and your default 4 steps will look rough. Get the pair, or set acceleration to none and use 25–50 steps. - The first run is a wall of time. The qint8 model loads the planner, T5, vision encoder, and 14B transformer before a single frame samples. Keep the default
keep_loaded_batchmemory mode so consecutive jobs reuse that cached pipeline. - No audio. Bernini is mute, full stop - same as every other node in this pack. If you need sound, it has to come from a separate stage in the workflow (routing through LTX for audio is the community's usual move).
- Slow isn't a bug. Video generation here is ~Wan-2.2-class compute per frame; the editing nodes are heavier still because they feed the source video back into the model. If your machine just survived a t2v run, you now know what you're signing up for.
If you came to Bernini for editing, run one 81-frame t2v job first. It's the fastest way to confirm your install, your VRAM budget, and your patience before you add a source video to the input.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A short smooth video of a red ceramic teapot rotating slowly on a white table. | 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 | 51264–2048 | Output width in pixels. Larger values increase VRAM use and runtime. |
| height | INT | 51264–2048 | Output height in pixels. Larger values increase VRAM use and runtime. |
| steps | INT | 41–100 | Diffusion steps. |
| seed | INT | 34560–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 | — |