Woosh Video Loader
Woosh Video Loader
- image_batch
- video
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.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| video_pathopt | STRING | Path to video file (.mp4, .avi, etc.) | |
| max_duration_sopt | FLOAT | 8.01–30 | Max video duration in seconds (VFlow-8s limit is 8) |
| image_batchopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | WOOSH_VIDEO | — |