ComfyUI Node

⬡ Polyhedron Save

One output node for images, video and audio. It picks the writer from the media actually wired to it, embeds the workflow so the file can be dragged back into ComfyUI, and when it writes a clip it drops a still frame beside it as a control image - an .mp4 cannot carry a workflow, a PNG can.

By PolyhedronAI·Created 3 months ago·Updated 17 days ago· 2
⬡ Polyhedron Save
  • image
  • video
  • audio
  • mask
  • path
  • fps
filename_prefixPolyhedron
media_kindauto
image_formatpng
image_quality100
video_presetH.264 MP4 (delivery)
quality17
frame_rate24.00
autoplayfalse
pingpongfalse
loop_count0
trim_to_audiofalse
save_metadatatrue
save_outputtrue
CategoryPolyhedron/IO

Inputs (17)

NameTypeDefaultDescription
filename_prefixSTRINGPolyhedronName under ComfyUI/output/. A '/' makes a subfolder. Optional tokens are expanded here: %date:yyyy-MM-dd% / %date:hhmmss%, %width%, %height% (illegal path characters are stripped so a token can never break the path). A counter keeps files unique.
media_kindCOMBOautoauto: infer from what's wired (VIDEO -> video; IMAGE+audio/fps -> video; IMAGE alone -> image; AUDIO alone -> audio). Or force 'image' / 'video'.
image_formatCOMBOpngStill format. png = lossless + embedded workflow (drag back to reload). webp = smaller / optional lossless. jpg = no alpha.
image_qualityINT1001–100webp / jpg quality (100 on webp = lossless). png ignores this (it uses lossless compression).
video_presetCOMBOH.264 MP4 (delivery)Delivery (small, universal) vs Master (edit/archive). H.264 uses ComfyUI's own tested writer; the masters use our bundled-PyAV encoder (10-bit via a 16-bit intermediate, intra keyframes).
qualityINT170–100crf-style quality for the lossy presets (lower = better/larger; ~17-20 is visually lossless). ProRes/FFV1 ignore it.
frame_rateFLOAT24.000–240fps when a video is built from an IMAGE batch. A wired VIDEO keeps its own rate (this is ignored then). Convertible to an input -- wire Interpolate's fps output here so interpolated frames keep their true duration.
autoplayBOOLEANfalseIn-node video preview: off = show first frame with play controls (a single-frame clip never jumps). On = play automatically (muted); loops only when the clip has >1 frame.
pingpongBOOLEANfalseAppend the reversed frames (forward then back) for a seamless boomerang loop.
loop_countINT00–1000GIF / animated-WebP loop count (0 = loop forever).
trim_to_audioBOOLEANfalseMatch the clip length to the wired audio (trim the longer of the two) so video and sound end together.
save_metadataBOOLEANtrueEmbed the workflow + prompt (PNG text / MP4 metadata) so the file can be dragged back into ComfyUI.
save_outputBOOLEANtrueOn: write to ComfyUI/output/. Off: temp dir (preview only, keeps output/ uncluttered while iterating).
imageoptIMAGEStill(s) or video frames [N,H,W,3|4].
videooptVIDEONative VIDEO (frames + audio + fps ride through). Takes the Media Loader's `video` or `video_audio` output alike -- a `video_audio` wire carries its trimmed companion track along and it is muxed into the written clip.
audiooptAUDIOOptional audio to mux with image frames, or to replace a wired video's audio.
maskoptMASKOptional alpha [N,H,W] (opaque->0). Wired ALONE, the mask itself is saved as grayscale stills. Kept for png/webp stills and alpha-capable video presets (ProRes 4444).

Outputs (2)

NameTypeDescription
pathSTRING
fpsFLOAT