Sonder Save Video
The save node that knows about color drift, takes, and presets
- project
- frames
- audio
- output_path
Sonder Save Video is the node your generation actually lands in when you're using Sonder Editor - the output half of the loop. It takes your rendered IMAGE tensor, encodes it to a project video asset in the project's exports folder, optionally muxes audio, shows a thumbnail of the first frame on the node card, and - here's the part no stock save node does - it can auto-correct accumulated VAE color drift against the render's protected context frames.
That color-drift correction is worth pausing on, because it's the feature that sounds like marketing and isn't. Anyone who's chained video segments through a VAE knows the enemy: each decode drifts a little, and by segment five your colors have walked off. Sonder's trick is that the render window carries untouched context frames from the editor - frames that weren't denoised. This node fits a correction that matches those clean frames back to the editor's pre-encode reference, applies it per save, and records the outcome in the asset metadata. It's on by default, and it auto-skips when there's no context or the correction would exceed safe bounds, so a bad fit can't wreck a good render.
Inputs and outputs that matter
Core inputs: project (saves to its exports folder), frames (the IMAGE batch), filename_prefix, fps, and mode - Video (plain save) or Take (saves and auto-places the result back on the timeline as a new lane, which is the iteration loop closing). The place_audio_on_timeline toggle exists so fixed, already-placed audio doesn't spawn a duplicate lane per take - turn it off for unchanging audio.
The save_preset dropdown is the other thing to know: Compatible MP4 (browser-safe, BT.709 tagged) for everyday work, High Quality MP4, Editing Master MP4 (4:4:4, your browser may not play it), ProRes 422 HQ for handoff to an editor, Lossless FFV1 (RGB) for archival, and Custom for expert control of codec/container/CRF/pixel format/PNG-sequence output. embed_metadata (default on) bakes the full ComfyUI workflow into the file - turn it off before sharing if your graph is private. Optional audio muxes sound in. Output: output_path.
Install and gotchas
Pack install (ComfyUI Manager search Sonder Editor, or git clone + pip install -r requirements.txt + restart), and a working ffmpeg - the bundled imageio-ffmpeg binary is a fallback, but a system ffmpeg on PATH handles the wider preset range, and the ProRes/FFV1 presets especially want it.
The failure to plan for: if ffmpeg not found errors show up on save, that's the first thing to check. And remember the security note from the README - with embed_metadata on, exported files carry your prompts, model names, and paths. The "Compatible MP4" preset is the one that plays everywhere; if a video you saved won't preview, check whether you picked an Editing Master or ProRes preset and re-save in a browser-safe format. It's the node that makes "generate, place, review, regenerate" feel like a loop instead of a chore.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| project | SONDER_PROJECT | The project — video saves to its exports/ folder. | |
| frames | IMAGE | Batch of frames to encode as video. | |
| filename_prefix | STRING | output | Prefix for the output filename. |
| fps | FLOAT | 24.0001–120 | Output video frame rate. |
| mode | COMBO | Video | Video: normal save. Take: saves and auto-places result on timeline as a new lane. |
| place_audio_on_timeline | BOOLEAN | true | Take mode only. When on, the take's audio is also placed as a separate audio track on the timeline. Turn off for fixed/unchanging audio you've already placed once, to avoid duplicate audio lanes and assets per take. The audio is still muxed into the saved video either way. |
| mark_queue_complete | BOOLEAN | false | When enabled, this save node completes the active Sonder queue job after a successful save. |
| audioopt | AUDIO | Audio to mux into the video. | |
| embed_metadataopt | BOOLEAN | true | Embed source ComfyUI workflow metadata into files written by this save node. |
| save_presetopt | COMBO | Compatible MP4 | Preset choices: Compatible MP4: Browser-safe MP4 for everyday review and sharing; BT.709 tagged. | High Quality MP4: Browser-safe MP4 with higher visual quality and larger files; BT.709 tagged. | Editing Master MP4: High-fidelity 4:4:4 MP4 for internal round trips; BT.709 tagged; browser preview may not decode it. | ProRes 422 HQ: Large editing handoff file with 10-bit ProRes video and PCM audio; BT.709 tagged. | Lossless FFV1 (RGB): Lossless RGB archive/diagnostic output with FLAC audio; very large files. | Custom: Expert export controls for allowlisted video settings or PNG image sequences. |
| custom_output_kindopt | COMBO | Video File | Custom only. Video File encodes one media asset; PNG Sequence writes frame images. |
| custom_containeropt | COMBO | mp4 | Custom video only. Output container/extension. |
| custom_video_codecopt | COMBO | libx264 | Custom video only. ffmpeg video codec. |
| custom_pix_fmtopt | COMBO | yuv420p | Custom video only. ffmpeg pixel format. |
| custom_crfopt | INT | 180–51 | Custom x264/x265 only. Lower means higher quality and larger files. |
| custom_encoder_presetopt | COMBO | slow | Custom x264/x265 only. Slower presets improve compression efficiency. |
| custom_audio_codecopt | COMBO | aac | Custom video only. Choose none to omit connected audio. |
| custom_audio_bitrate_kbpsopt | INT | 1921–10000 | Custom AAC audio only. Audio bitrate in kbps. |
| custom_png_compressionopt | INT | 00–9 | Custom PNG Sequence only. 0 is fastest/largest; 9 is smallest/slowest. |
| autoplay_previewopt | BOOLEAN | false | Autoplay the inline video player on this node card after a run. When off, it opens paused on the first frame. Display-only — does not affect the saved file. |
| color_drift_correctionopt | BOOLEAN | true | Corrects accumulated VAE color drift by matching this render's untouched context frames back to the editor's pre-encode reference. Fitted per save; skipped automatically when no context exists or the correction would exceed safe bounds (outcome recorded in asset metadata). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_path | STRING | Absolute path to the saved video file. |