Video Volume
The quiet fix for AI video's worst habit (silence)
- video
- video
Most AI-generated video comes out with no usable audio at all - or with a track that's either buried or blowing your speakers out. ComfyTV's Video Volume stage is the boring, dependable fix: it's a gain + fade control for a clip's existing audio track. No model, no magic, no download. Just "make it louder / quieter / fade it in."
This is one of the "edit" stages (it lives under ComfyTV/Video, right next to Mux Audio and Demux in the pack's own docs), and it's the stage you reach for when you're assembling a sequence and a cut lands like a door slamming. A 0.5s fade-out on the outgoing clip and a 0.5s fade-in on the next one will do more for your video feeling "made" than any upscaler will.
How it works
Under the hood it's not doing anything clever - that's the point. It decodes the clip's audio track to raw samples, multiplies them by your volume gain, applies linear fade ramps on each end, hard-clips to full scale so nothing goes past ±1.0, then re-encodes the audio as AAC into a fresh MP4 while copying the video stream through untouched (all via PyAV, which ships in ComfyUI's environment). So this is a genuine re-encode, not a playback-side tweak: the volume change is baked into the file. That means you can drop the result anywhere - the export stage, another pipeline, whatever.
The inputs that matter
- volume - gain multiplier, 0 to 8, default 1. 0.5 halves it, 2 doubles it.
- fade_in_s / fade_out_s - linear fades in seconds, 0 to 60, default 0. Start here before you touch anything else.
There are three other inputs on this node - force_run_token, project_id, parent_output_id - but they're internal, populated by the ComfyTV frontend to track your project's lineage. Ignore them; you will never set one by hand.
The video input is a COMFYTV_VIDEO (an internal stage type, not a ComfyUI tensor) and it's optional on the wire - in the ComfyTV canvas you just chain it after whichever video stage produced your clip. The single video output feeds downstream or your exporter.
Installing ComfyTV
ComfyTV is a big pack (~190 stages), but these four video nodes don't drag any extra weight in. The pack declares zero Python dependencies and needs no model files for any of these stages - torch, numpy and PyAV all come from your ComfyUI install. Get it via ComfyUI Manager (search "ComfyTV") or:
cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV
Then fully restart the backend. One real gotcha if you're on ComfyUI Desktop or have multiple installs: the cd above can silently drop you into the wrong instance. Check the startup log for the base path it actually loaded, clone into that instance's absolute path, and confirm custom_nodes/ComfyTV/__init__.py is at the top level (not a nested ComfyTV/ComfyTV/). A browser refresh is not a restart.
Where people get burned
The classic error: "source has no audio track." The volume stage can't boost what isn't there. If your clip came out of a video generator that produced no audio, feed it through Mux Audio first to lay a track down, then apply volume. And resist cranking volume to 4 expecting a "loud" master - the node hard-clips at full scale, so a hot source above ~1.5–2 will start flattening transients. If your video still sounds wrong after that, the problem isn't this stage.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| force_run_token | INT | 00–2147483647 | Internal — bumped on Run to invalidate ComfyUI's input cache. |
| project_id | STRING | Internal — populated by the projectStore on the frontend. | |
| parent_output_id | INT | 00–2147483647 | Internal — lineage parent set by spawn handlers on the frontend. |
| volume | FLOAT | 1.000–8 | — |
| fade_in_s | FLOAT | 0.00–60 | — |
| fade_out_s | FLOAT | 0.00–60 | — |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | COMFYTV_VIDEO | — |