Output Video Bucket (Advanced)
The node that does transparent video with audio
- images
- audio
- video
- video
- key
- manifest
Most video tools make you choose: you can have transparency, or you can have an audio track, but rarely both - alpha-channel video and muxed sound are usually mutually exclusive. This node is the exception. Feed it RGBA frames plus audio, pick vp9-webm, and you get a genuinely transparent VP9 WebM (yuva420p) with the audio muxed in. That combination is the pack's party trick and it's genuinely hard to get elsewhere.
Output Video Bucket (Advanced) is the full-control video output: a superset of the basic Output Video Bucket. It accepts a native VIDEO or raw frames (plus optional audio), and encodes to a container/codec of your choice with CRF control - then uploads to the bucket and hands back video, key, and manifest.
The inputs that matter
- images (optional IMAGE) - your frames. RGBA +
vp9-webm= real transparency. Optional if you providevideo. - audio (optional AUDIO) - muxed into the output, and yes, it works on the transparent path too.
- video (optional VIDEO) - a source clip whose frames/audio/fps seed the encode; explicit inputs win.
- format (COMBO, default
vp9-webm) - one ofvp9-webm,av1-webm,h264-mp4,av1-mp4. Onlyvp9-webmsupports transparency. - fps (FLOAT, default 0) -
0means auto: the source video's fps, or 24 for raw frames. - crf (FLOAT, default 32, range 0–63) - lower is higher quality and bigger files. 32 is a fine default; drop toward 18–20 for masters, raise for throwaway previews.
How it works
If you feed a video, its frames, audio, and fps seed the encode; any explicit input overrides that source. The encode itself is real PyAV work - the audio tracks use libvorbis on webm (deliberately not opus, whose encoder pre-skip can freeze <video> playback at t=0) and aac on mp4. The resulting clip is uploaded as <key>.<ext> with a sidecar manifest recording fps, frame count, duration, and whether audio made it in. The video output is the encoded result, so you can chain it onward.
The one caveat to internalize: only vp9-webm carries the alpha. Switch to av1-webm or the mp4 codecs and your RGBA frames get flattened - the transparency doesn't survive, though audio still muxes fine.
When you'd reach for it
Animated logos, character cutouts, lower-thirds, anything that needs to composite over footage later - transparent video is how you hand that off without shipping a PNG sequence. And the audio-muxing means a talking-head cutout with its original sound stays in sync in one file.
Install
ComfyUI Manager (search In-N-Out Bucket) or:
cd ComfyUI/custom_nodes
git clone https://github.com/littleowl/ComfyUI_In-N-Out_Bucket.git
pip install -r ComfyUI_In-N-Out_Bucket/requirements.txt
cp ComfyUI_In-N-Out_Bucket/.env.example ComfyUI_In-N-Out_Bucket/.env
Restart, under buckets/video. Deps are just boto3 + python-dotenv; PyAV, the encoder, already ships with ComfyUI.
Troubleshooting
Two common confusions. First: "my transparency is gone" - you picked a format other than vp9-webm, or your frames aren't actually RGBA (a 4-channel mask pipeline matters). Second: "no video output / error" - you must provide images or video; the node raises a clear error if both are missing, so wire at least one. Upload failures otherwise mean the usual bucket suspects: endpoint, credentials, and S3_ADDRESSING_STYLE=path for RustFS/MinIO. And when you transcode a previously-muxed clip, remember explicit inputs override the source - a silent fps override is the classic surprise.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| format | COMBO | vp9-webm | container-codec. Only vp9-webm supports transparency. |
| fps | FLOAT | 0.000–1000 | 0 = auto (the source video's fps, or 24 for raw frames). |
| crf | FLOAT | 320–63 | Lower = higher quality / bigger file. |
| imagesopt | IMAGE | Frames. RGBA + vp9-webm => transparency. Optional if 'video' is given. | |
| audioopt | AUDIO | Optional audio to mux into the video (works with transparency too). | |
| videoopt | VIDEO | Optional source VIDEO; its frames/audio/fps seed the encode. | |
| subfolderopt | STRING | Optional prefix to organize assets. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | The encoded video, for chaining. |
| key | STRING | — |
| manifest | BUCKET_MANIFEST | — |