NS Get Video Components
Pull audio and fps out of a video without decoding frames
- video
- video
- audio
- fps
Video in ComfyUI is awkward: you often have a VIDEO but what you actually need is its audio track, or its frame rate, to feed another node. NS Get Video Components splits a VIDEO into those parts. It's the "take it apart" half of a utility pair in symbiotica-ai/comfyui-nodes - NSCreate Video is the "put it back together" half.
The name is a nod to ComfyUI's own Get Video Components, with a deliberate difference: that one outputs image frames; this one outputs the VIDEO itself plus audio and fps. It's for the case where you want the file-level parts, not the pixels.
What you get
One input: video. Three outputs:
- video - the same video, passed through. Keeps the node useful in a chain without breaking a wire.
- audio - the extracted audio as an AUDIO dict (44.1kHz stereo WAV). This is the output you're probably here for: feed it to an audio node, a transcription pipeline, or back into NSCreate Video.
- fps - the frame rate as a FLOAT, read off the video stream via ffprobe.
The mechanism is straightforward: the video is written to a temp file, ffprobe reads the real r_frame_rate, and ffmpeg extracts the audio to a WAV that's loaded into an AUDIO tensor. No frame decoding, so it's fast even on long clips.
How it fits
The natural pattern is a round trip: get the audio out of a video, process it (transcribe it, re-time it, duck it), then NSCreate Video muxes it back onto the video - optionally at a different fps. It's also the sensible first step before any caption pipeline that needs to know what was actually said, since you can hand the extracted audio to a transcription node that takes audio rather than video.
Install
Ships with symbiotica-ai/comfyui-nodes (ComfyUI Manager search "Symbiotica", or clone + pip install -r requirements.txt). Needs ffmpeg/ffprobe on PATH. No API key. Restart after install.
Gotchas
If the source has no audio stream, the node doesn't fail - it returns an empty silence track and prints a note. That's friendlier than an error, but it means "no audio" and "silent audio" are indistinguishable downstream, so check your source if you were expecting sound. And the audio is decoded to 44.1kHz stereo regardless of source, so a 48kHz mixdown gets resampled - usually fine, but don't use this node when you need to preserve the original sample rate exactly (that's a muxing job, not an extraction job).
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| audio | AUDIO | — |
| fps | FLOAT | — |