Demux · Audio Track
Demux · Audio Track — pull the sound out of a video clip
- video
- audio
"Demux" is just a fancy word for split the container apart. A video file is a box holding a video stream and an audio stream; this node opens the box and hands you the audio stream on its own, as a proper audio output you can wire anywhere in the audio suite. It's the most literal "you have a clip, you need its sound" node in the pack.
It takes one input - video (a COMFYTV_VIDEO) - and returns one output, audio. That's the entire spec. The sibling node, Demux · Silent Video, does the mirror-image job and gives you the same clip with the audio stripped out; the README notes the 🔀 Demux toolbar action actually spawns both at once, because that's the workflow you want: video into the silent-video path for editing, audio into the audio path for processing, then re-mux them later.
Why would you bother when most ComfyTV audio stages already accept a video input directly? Because of what comes after. Nearly every AudioFX node will happily take a video and process its soundtrack in place, but the moment you want to do something the audio and video paths need to split for - clean the dialogue on the audio side while you color-grade the video side, or send the audio to a stem split and the video to a video stage - you want them as separate wires. That's the demux step.
Honest take: for a beginner this node mostly shows up as a helper you don't think about, the plumbing between "my clip has sound" and "I want to treat the sound as a track." It's genuinely useful once you hit the workflow where the same clip's audio needs a different pipeline than its video. And it costs nothing - demuxing is a container operation, not a re-encode, so it's effectively instant, no quality loss, no GPU.
Install is the pack-wide story: ComfyUI Manager search "ComfyTV", or git clone https://github.com/jtydhr88/ComfyTV into custom_nodes/, then a full backend restart (Desktop/macOS: clone by absolute path into the running instance). Zero extra pip dependencies - it's PyAV doing container-level stream extraction, no models, CPU-only. If you feed it a silent video, you'll get an empty audio track - check your source, not the node.
Inputs (4)
| 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. |
| videoopt | COMFYTV_VIDEO | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| audio | COMFYTV_AUDIO | — |