Veo to VHS
The glue that gets your Veo clip into Video Helper Suite
- video_paths
- images
Despite the name, nothing about tape
This node has nothing to do with a VHS tape filter. "VHS" here is the Video Helper Suite, the ubiquitous ComfyUI video-pack family, and this node exists for one reason: to hand a Veo-generated clip to it. The pack's Veo Text to Video node returns a path to an .mp4 file, but Video Helper Suite's combine nodes work on batches of image frames, not paths to video files. VeoToVHS is the adapter between those two worlds - the pack's example workflow chains exactly that: Veo Text to Video → this node → VHS_VideoCombine.
How it works
The node takes the pack's VEO_VIDEO type (again: just a path to the saved mp4), opens it with OpenCV, and extracts a fixed set of up to 120 frames spread evenly across the clip. Each frame is converted from OpenCV's BGR ordering to RGB, normalized to the 0–1 float range ComfyUI images use, and then everything is stacked into one batched tensor. What comes out is a standard IMAGE - the exact thing VHS_VideoCombine is waiting for.
Two implementation details worth knowing:
- The frame cap is hard-coded at 120. At Veo 2's 24 fps that's exactly 5 seconds of frames, so an 8-second clip gets thinned - the node skips frames to stay at 120 rather than handing you all ~192.
- If the video can't be opened (or nothing was generated), it quietly returns a single black 512×512 frame instead of erroring. That's defensive, not helpful - a black frame is easy to mistake for a successful generation, so if your VHS output looks like a void, check upstream first.
Inputs and outputs
The whole schema is one input and one output, which keeps this node simple to the point of being boring:
- video_paths (
VEO_VIDEO) - feed it from Veo Text to Video, or from Veo Video Saver's passthrough. - images (
IMAGE) - wire into any VHS_VideoCombine instance. Since it's a standard IMAGE type, nothing about it is Veo-specific after this point: you can route these frames anywhere, including interpolation or image-to-video models that take an image batch.
Install
Same as the rest of the pack - it ships in the same repo:
cd ComfyUI/custom_nodes
git clone https://github.com/ShmuelRonen/ComfyUI-Veo2-Experimental
cd ComfyUI-Veo2-Experimental
pip install --upgrade google-genai
Then restart ComfyUI. OpenCV, numpy and torch are already bundled with ComfyUI's Python, so this node adds no heavy extra dependencies. You'll also want Video Helper Suite itself - search "VHS" in ComfyUI Manager.
When to actually use it
This node earns its keep when you want to re-encode the Veo output with VHS's ffmpeg presets (H.264, ProRes, whatever your edit expects), attach audio, or intercut the clip with locally-generated ones. If you just want the raw Veo mp4, skip it entirely - Veo Video Saver alone is enough. And keep the 120-frame ceiling in mind: it's fine for a quick re-encode, but it silently drops frames, so don't route an 8-second clip through here if you need every frame for interpolation.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| video_paths | VEO_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |