Doom Save Video Free
From frames to an mp4 with sound, in one node
- images
- audio
- frames
A video model hands you a stack of frames and, if you're lucky, an audio track - but frames on disk are not a video, and sound sitting in a separate tensor is not a soundtrack. Doom_SaveVideoFree is the pack's encoder: it takes the frame batch from an LTX or MiniMax H3 sampler, muxes in the audio if you feed it, and writes a real mp4, webm, or mov into your output/ folder, with a preview player in the UI so you can watch the result without leaving ComfyUI.
It's the natural end of the pack's video pipelines. The H3 sampler outputs images and audio; this node is where they become a file you can actually send someone.
How it works
The heavy lifting is done by ffmpeg - frames are piped to it as raw video on stdin, audio is muxed in, and the container is written out. The node finds ffmpeg through ComfyUI's bundled imageio_ffmpeg first, then falls back to ffmpeg on your PATH. The key conceptual point: frames carry no fps, so the fps you set here is what determines how long the video plays. Set 24 for LTX/H3 output (that's the rate those models are trained at).
The inputs that matter
- images - the
[N,H,W,3]frame batch, straight from a sampler. - filename_prefix - the base name; a
_00001_-style counter is appended so you never overwrite. - subfolder - an output subfolder (empty = root).
- format - mp4 / webm / mov.
- video_codec -
libx264(H.264, the compatible default),libx265(smaller files, slower, pickier players), orlibvpx-vp9(the webm codec). - fps - the output framerate. This is the one that decides duration.
- audio (optional) - the
{waveform, sample_rate}dict from an H3/LTX sampler. Wire it or your video is silent.
Output is frames - a passthrough of what you put in, so you can chain this node mid-graph and keep the frames flowing elsewhere.
Setup
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/PeterMikhai/Doom_Flux_NodePack
Restart ComfyUI, or search "DoomAI Nodes" in Manager. The pack itself has no extra pip dependencies, but ffmpeg is a real runtime requirement - most ComfyUI installs carry imageio_ffmpeg, but if you get an ffmpeg error, install ffmpeg on the system and make sure it's on PATH.
Where people get burned
- Silent video because you forgot the audio input. H3 and LTX-2 generate sound together with the picture - that's their whole selling point - but this node doesn't pull it for you. Wire the sampler's
audiooutput in. - Wrong fps makes clips wrong length. A 124-frame batch at 24 fps is ~5 seconds; at 12 fps it's ~10 seconds of slowed-down motion. Match the fps to the model's trained rate.
- ffmpeg not found. The fallback chain is usually fine, but on a bare-bones ComfyUI (Docker images, some portable builds) ffmpeg may be missing entirely. Check the error, install ffmpeg, retry.
- This is the free tier. The README is upfront: pro codecs and per-frame PNG exports live in the paid
DoomAI_Propack. libx264 at 24 fps is the honest free path, and for most local video it's plenty.
For the price of one green node at the end of your graph, you go from "where's my video?" to "it's in output/, with sound, with a counter". For a pack that's otherwise aimed at the newest, shiniest models, this is the boring, dependable part - and boring is exactly what a file encoder should be.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Кадры [N,H,W,3] 0..1 — например выход Doom_ReferenceVideo | |
| filename_prefix | STRING | DoomAI_video | Имя файла; счётчик _00001_ добавится сам |
| subfolder | STRING | Подпапка внутри output/ (пусто = корень) | |
| format | COMBO | mp4 | 3 options: mp4, webm, mov |
| video_codec | COMBO | libx264 | libx264 (H.264, совместимость) · libx265 (меньше) · libvpx-vp9 (webm) |
| fps | FLOAT | 24.001–120 | FPS на выходе (кадры не несут fps) |
| audioopt | AUDIO | Звук {waveform, sample_rate} — выход Doom_ReferenceVideo |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | Кадры как на входе (passthrough) |