Nodes/Comfyui_Attome_S3/Attome S3 Save Video
ComfyUI Node

Attome S3 Save Video

Render video straight to S3, with audio muxed in

By attome-ai·Created 9 months ago·Updated 8 months ago· 4
Attome S3 Save Video
  • frames
  • s3_config
  • audio
  • s3_uris
s3_keypath/to/output.mp4
fps24.0
codecmp4v
save_metadatatrue

The end of a video pipeline is usually the same chore: gather your frame batch, run Save Video, then manually upload the MP4 somewhere. Attome S3 Save Video collapses that into one step - it encodes your IMAGE batch into an MP4 and uploads it to the bucket, returning the s3:// path. It even takes an optional audio input and muxes it into the file, so a complete video with sound comes out of a single node.

It's part of Comfyui_Attome_S3 and it's the pack's most ambitious save node, because video encoding is where the corners get cut.

Inputs and outputs

  • frames (required) - the IMAGE batch from your sampler.
  • s3_key (required) - destination path; it'll be forced to .mp4 no matter what you type.
  • s3_config (optional) - from the Attome S3 Config node, or env.txt defaults.
  • fps - playback speed, default 24, range 1–120.
  • codec - mp4v (default), avc1, or XVID. This is the choice that matters: avc1 is H.264, which produces smaller, universally playable files - but the encoding is slow and the output can be huge in memory during encode. mp4v is the fast, lazy default.
  • save_metadata (optional) - default true. MP4 workflow metadata is written as ©cmt/desc tags, which again needs mutagen.
  • audio (optional) - an AUDIO object. If present, it's muxed into the MP4.
  • Output: s3_uris - list of uploaded paths.

The audio muxing caveat

This is where you need to read the fine print. The video is encoded with OpenCV (cv2.VideoWriter, RGB→BGR, fourcc from your codec choice). The audio track is then muxed in with ffmpeg - and the node looks for ffmpeg on your PATH first, then tries imageio_ffmpeg. If neither exists, it silently saves the video without audio. No error, no warning beyond a console line. So if your soundtrack mysteriously vanishes, check which ffmpeg. One line fixes it:

pip install imageio-ffmpeg

The muxing also depends on your ffmpeg build handling -c:v copy with the video's codec; if it fails, the fallback is video-only again.

Install and gotchas

ComfyUI Manager (search "Comfyui_Attome_S3"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/attome-ai/Comfyui_Attome_S3
cd Comfyui_Attome_S3
pip install -r requirements.txt

Restart. Needs opencv-python for encoding, torchaudio if you pass audio, and ffmpeg (system or imageio-ffmpeg) for the mux step. Upload-side, it's the pack standard: s3:PutObject permission or you get Access Denied, and endpoint_url for MinIO/R2. One more trap: because the extension is always forced to .mp4, a key like outputs/final comes back as outputs/final.mp4 - use the returned URI, don't reconstruct it. And the workflow-embedding habit applies: save_metadata: false for anything you'll share, keys in env.txt not in the graph. Get those right and it's the cleanest "render → cloud" finish line this pack offers.

CategoryAttome/S3

Inputs (7)

NameTypeDefaultDescription
framesIMAGE
s3_keySTRINGpath/to/output.mp4
s3_configoptS3_CONFIG
fpsoptFLOAT24.01–120
codecoptCOMBOmp4v3 options: mp4v, avc1, XVID
save_metadataoptBOOLEANtrue
audiooptAUDIO

Outputs (1)

NameTypeDescription
s3_urisSTRING