Nodes/ComfyUI-Woosh/Woosh Video Loader
ComfyUI Node

Woosh Video Loader

Woosh Video Loader

By Saganaki22·Created 5 months ago·Updated 4 months ago· 130
Woosh Video Loader
  • image_batch
  • video
video_path
max_duration_s8.0

The foley problem, in one node. You've rendered a clip - a car door closing, rain on a window, someone crossing a room - and it's silent. This is the node that feeds that clip to Woosh's video-to-audio models (VFlow/DVFlow) so matching sound comes out the other end. It's a small, single-purpose node, but it's the piece that makes video-to-audio possible in this pack at all, and it's where a surprising number of workflows trip up.

How it works

Two ways in, one way out. Give it a video_path string pointing at a file (.mp4, .avi - anything PyAV can read) and it extracts frames with the Woosh library's extract_video_frames, capped at max_duration_s seconds. Or connect an image_batch (a standard ComfyUI IMAGE tensor) and it treats those frames as the video directly, at 24fps. That second route is quietly powerful: it means you can feed frames from a VideoHelperSuite load, frames you already generated, or even a batch of stills, and skip the file round-trip entirely.

If both are connected, image_batch wins. If neither is, you get a clear error rather than a silent no-op.

The output video is a custom WOOSH_VIDEO type that only plugs into the Woosh Sampler's video input. The moment you wire it up, the sampler auto-detects V2A mode and switches to the VFlow/DVFlow path - no mode switch to flip, which is one less thing to get wrong.

The input that matters

max_duration_s defaults to 8.0. Don't push it past that for the VFlow-8s checkpoints: the model was trained on 8-second clips and that's its hard ceiling. Set it to match how long your clip actually is - 2 seconds of footsteps doesn't need 8 seconds of conditioning, and shorter input samples faster. The image-batch route ignores this and just uses the frames you hand it.

Install and models

ComfyUI Manager (search Woosh) or the manual route:

cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/ComfyUI-Woosh.git
pip install -r ComfyUI-Woosh/requirements.txt

Restart ComfyUI fully afterwards. For V2A you need Woosh-VFlow-8s or Woosh-DVFlow-8s, plus Woosh-AE and TextConditionerV, in ComfyUI/models/woosh/ - each folder with config.yaml and weights.safetensors at its root. The av (PyAV) dependency in requirements.txt is the real requirement here: no PyAV, no frame extraction, and the node errors on load.

The honest limits

The 8-second cap is real, and it's the model, not the node. It's great for sound effects - a gunshot, a door, a whoosh, most of which don't need a full second - and fine for short ambience. It's the wrong tool for scoring a scene-length clip. If you need long-form foley, MMAudio and HunyuanVideo-Foley are the established alternatives (covered in the audio-generation knowledge base); Woosh's edge is quality and simplicity for short effects.

One last thing: the first run after install downloads the RoBERTa tokenizer from Hugging Face into models/woosh/hf_cache/. Later runs use the cache. If that download fails - firewall, or you're behind the GFW - set HF_ENDPOINT=https://hf-mirror.com before launching ComfyUI.

CategoryWoosh/Video

Inputs (3)

NameTypeDefaultDescription
video_pathoptSTRINGPath to video file (.mp4, .avi, etc.)
max_duration_soptFLOAT8.01–30Max video duration in seconds (VFlow-8s limit is 8)
image_batchoptIMAGE

Outputs (1)

NameTypeDescription
videoWOOSH_VIDEO