Nodes/ComfyTV/Audio Meter Overlay
ComfyUI Node

Audio Meter Overlay

Put a live audio waveform on your video — the 'music video' look in one node

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Audio Meter Overlay
  • video
  • video
force_run_token0
project_id
parent_output_id0
meter_w400
meter_h20
cornerbottom-left
margin16

Every second clip you scroll past is some AI video with a fake waveform bouncing at the bottom, and half of them are faked in post because actually rendering one is a pain. Audio Meter Overlay renders a real one. It takes a video with an audio track and burns a live audio meter - an actual waveform driven by the clip's sound - into the corner of the frame. It's the one node that instantly makes a generated clip read as "content" instead of "test render."

You'll use it for music-visualizer-style content, reaction/playlist videos, or anywhere you want the audio to be visible: a podcast clip with a waveform in the corner, a song demo with a bouncing bar, a before/after comparison where you want the viewer to see the loudness change. It's also a handy diagnostic - run it on a final export and you can see whether the loudness stage actually did its job.

How it works

The source is honest about the machinery: it requires FFmpeg's showvolume and overlay filters, and it errors if the input video has no audio track. showvolume generates the meter visualization from the decoded audio, and overlay composites it onto the video at the corner you pick. The controls are pure layout:

  • meter_w / meter_h - the meter's size in pixels (defaults 400×20, clamped to fit the frame).
  • corner - which of the four corners it sits in (default bottom-left).
  • margin - the gap in pixels from the frame edge (default 16).

The optional video input takes a COMFYTV_VIDEO and the single output is the composited video. That's it - there's no audio output, because this stage doesn't alter sound; it just draws it. Internal inputs (force_run_token, project_id, parent_output_id) are frontend plumbing.

Installing ComfyTV

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Full backend restart, then ComfyTV → AudioFX; ComfyUI Manager finds "ComfyTV". Zero extra Python deps - the filters run through FFmpeg via PyAV, bundled with ComfyUI. No models.

The pack-wide install trap: on macOS / ComfyUI Desktop / multi-install machines, cd ComfyUI/custom_nodes can clone into the wrong instance - clone succeeds, stages never appear. Read the running instance's path from the startup log, clone into that instance's custom_nodes by absolute path (quote paths with spaces/parentheses), confirm ComfyTV/__init__.py is top-level, restart the backend fully.

Common issues

  • "the video has no audio track." The stage refuses to run without audio - that's the author's own error message. Mux a soundtrack onto the clip first (the pack's video/audio tools can do it), or render the video with audio enabled.
  • The meter is tiny or huge. meter_w/meter_h are clamped to the frame, so on a narrow clip 400×20 may read small. Scale to taste.
  • It covers the important part of the frame. It's a corner overlay by design - corner and margin are the only position controls, so pick the corner with the least going on.
  • The meter doesn't move. If the audio is normalized to a flat level (very compressed), the meter barely animates. That's a loudness problem, not a meter problem.

It's a simple idea executed properly, and it's the closest ComfyTV gets to a free "music video" button.

CategoryComfyTV/AudioFX

Inputs (8)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
meter_wINT40080–1920
meter_hINT208–120
cornerCOMBObottom-left4 options: bottom-left, bottom-right, top-left, top-right
marginINT160–200
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO