Prism Save Video with Audio
The one node here that will fail because of ffmpeg
- frames
- audio
- video_path
What it is
The output node: it takes the frames and the 48 kHz waveform from a Prism sampler and muxes them into one H.264/AAC MP4 with proper audio. You reach for it because the interesting part of this pack is video that has sound, and most of ComfyUI's saving nodes handle one or the other.
Wire frames, audio and fps from either sampler into it and you're done - it's marked as an output node, so it runs when you hit Run even with nothing downstream.
The honest mechanism
There's no hidden magic, and that's the point. The node hands the frames to an ffmpeg subprocess over stdin as raw RGB, writes the waveform out as a temporary 16-bit PCM WAV, and muxes:
-c:v libx264 -crf 18 -pix_fmt yuv420p -af apad -c:a aac -b:a 192k -movflags +faststart -shortest
Read that closely and two behaviours fall out. apad pads a short audio track with silence, and -shortest cuts a long one down to the video length - the pack documents this as intended: the MP4 keeps every video frame, and the audio is fitted to it either way. Because DAC rounds audio up to whole codec frames, that trimming is doing real work rather than tidying up.
The output is only moved into place once ffmpeg exits cleanly, and the frames are streamed rather than held as a second copy, so the node isn't the memory hog in this graph.
Inputs and outputs
frames(IMAGE) - fromframeson either sampler.audio(AUDIO) - fromaudioon either sampler. It expects one mono or stereo batch; the samplers produce exactly that.fps(FLOAT, default 24) - feed it the sampler'sfpsoutput rather than typing it, or your MP4 and your generation will disagree about time.filename_prefix(STRING, defaultPrism/video) - the usual ComfyUI semantics, including the subfolder. Outputs land inComfyUI/output/Prism/video_00001.mp4and increment from there.
One output, video_path (STRING) - the saved file path, useful if you want to log it or hand it to another node. The node also pushes a UI payload so the muxed video previews (with sound) on the canvas, without needing VideoHelperSuite installed.
Install
The node ships with the pack:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-Prism-T8.git
cd Comfyui-Prism-T8
python -m pip install -r requirements.txt
Or ComfyUI Manager → Comfyui-Prism-T8 / registry t8star/prism-t8. Restart.
And install ffmpeg. This is the pack's one genuinely non-Python dependency for output: ffmpeg has to be on your PATH. On Windows that means a real PATH entry, not just extracting a zip somewhere convenient; on Linux, sudo apt install ffmpeg is usually the whole story. Verify before you blame ComfyUI:
ffmpeg -version
Where people get burned
ffmpeg must be installed and available on PATH to save Prism video/audio. The message is exact and it means what it says. If ffmpeg -version works in your shell but ComfyUI still complains, you launched ComfyUI from something that has a different PATH (a service, a launcher script, a venv).
FileExistsError. The node won't overwrite an existing file. If you re-run the same prefix after manually deleting outputs or pointing at a folder with a stale counter, you can collide. Change the prefix or clear the folder.
Frames without sound. Check that you actually wired audio. An AUDIO input left empty isn't silent audio, it's a missing input, and the graph shouldn't run - but a stale canvas that was saved against an older version of the pack can look like it did.
A black or green-tinted MP4 in a player that otherwise works. That's an H.264/yuv420p compatibility thing on the player's side, not Prism. The frames themselves are in output/ as PNGs from the example workflows; check those before you re-render anything.
The bigger trap, which isn't this node. Prism's base model degrades audio for some prompt, seed and reference-image combinations - a limitation the author reproduced with the FreeVideo author, present in both samplers. A cleanly muxed MP4 is not evidence the speech sounds right. Watch the file with sound on before you spend an hour re-rolling seeds looking for a fix that isn't a graph problem.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| frames | IMAGE | — | |
| audio | AUDIO | — | |
| fps | FLOAT | 24.001–120 | — |
| filename_prefix | STRING | Prism/video | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |