Save Mp4 Pixaroma
Encode frames (and audio) to MP4 without leaving ComfyUI
- video_frames
- audio
Save Mp4 Pixaroma is the pack's video finisher: it encodes an IMAGE batch (and optional AUDIO) into a single H.264 MP4, with a built-in <video> preview right on the node so you can watch the result without opening another app. If you've ever generated a clip in ComfyUI and then shuffled frames through some external tool to get an actual video file, this is the node that ends that errand.
It pairs naturally with the pack's own AudioReact Pixaroma (audio-reactive image-to-video, no extra models needed) and Load Video Pixaroma (frames + audio in one go), but it works with anything that produces frames and an audio track. The two most-wired inputs are video_frames (the frame batch) and fps (default 24 - wire AudioReact's fps output here so the file always matches what produced the frames). filename_prefix defaults to Video and the node appends a 5-digit counter (Video_00001.mp4), with subfolder support and the same date/filename tokens as the rest of the pack.
The settings that matter
save_mode-savewrites to ComfyUI'soutput/folder (kept across restarts);previewwrites totemp/(auto-cleared on restart). Use preview while iterating so you don't bury your output folder in test clips. The in-node video preview works the same either way.trim_to_audio- off by default, meaning every frame is kept and the audio just ends where it ends. Turn it on when the audio is the master (e.g. with AudioReact) and the video ends exactly at the audio's length. The caveat in the tooltip is honest: if the audio is slightly shorter than the video, it can drop a frame or two.audio- optional, muxed in as AAC 192k. Connect AudioReact's audio output here for sound in the final file.
How it actually encodes
This is worth knowing, because it's the difference between "it works" and "it works with no install." The frames stream straight to ffmpeg's stdin - no temp PNG files - and the node auto-locates an ffmpeg binary: it prefers imageio-ffmpeg's bundled exe (so no system install needed), with ffmpeg on PATH as a fallback. If you get an "ffmpeg not found" style error, the fix is:
pip install imageio-ffmpeg
The encoder is hardcoded to libx264 / preset medium / CRF 19, which is a sensible, boring default for local output - the author explicitly traded per-clip control for a cleaner UI. There's no encoder widget to fuss with.
The gotcha that will bite you
yuv420p requires even width and height. Feed it an odd-sized frame and ffmpeg crashes with an opaque error - so this node surfaces a clear message instead: "your dimensions are odd, fix them." If you hit it, resize your frames to an even size first (Image Resize Pixaroma with a snap to 16 or 32 will do it). Also worth knowing: the workflow is embedded in the saved MP4's metadata, so you can drag the video back into ComfyUI to restore the graph - but reading it back needs a video pack like VideoHelperSuite installed. And as ever: after updating the pack, hard-refresh your browser tab (Ctrl+Shift+R / Cmd+Shift+R) before chasing anything.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| video_frames | IMAGE | Frame batch to encode. Wire Audio React Pixaroma's video_frames output here. | |
| fps | FLOAT | 241–120 | Output frame rate. Wire Audio React Pixaroma's fps output here so it always matches what produced the frames. |
| filename_prefix | STRING | Video | Filename stem. The node appends a 5-digit counter and .mp4 (e.g. Video_00001.mp4). Use '/' for subfolders, date tokens like %date:yyyy-MM-dd%, and node references like %Seed Pixaroma.seed% that print another node's field value into the name. |
| save_mode | COMBO | save | save: write to ComfyUI's output/ folder, kept across restarts. preview: write to ComfyUI's temp/ folder, auto-cleared on restart, so use it while iterating and you will not clutter output/. The in-node video preview works the same in both modes. |
| trim_to_audio | BOOLEAN | false | Off (default): keep every video frame; the audio simply ends where it ends. On: end the video exactly at the audio's length (ffmpeg -shortest), for when the audio is the master (e.g. with Audio React). On can drop the last frame or two when the audio is slightly shorter than the video. |
| audioopt | AUDIO | Optional audio track to mux into the mp4 as AAC 192k. Connect Audio React Pixaroma's audio output here. | |
| audio_fade_msopt | INT | 00–2000 | Fade the sound in over this many milliseconds at the very start. 0 is off. AI video models often start their audio at full level in a single step, which is heard as a click; about 120 helps a lot and is too short to notice as a fade. Leave it at 0 when you are just re-saving a video whose sound you do not want altered. |
Outputs (0)
No outputs