KY_FFmpeg: Image Sequence to Video
Image Sequence to Video — full encoder control for frames already on disk
- video_path
Where KY_SaveVideo takes an IMAGE tensor batch straight out of your ComfyUI graph and writes a video, this node starts from the other end: frames that are already sitting on disk as individual image files. Point it at a folder, and it runs a proper ffmpeg encode with the kind of controls you'd expect from actually driving ffmpeg by hand - codec choice, rate-control mode, colorspace, pixel format - rather than a couple of simplified sliders.
When you'd reach for this instead of KY_SaveVideo
If your frames came from this pack's own KY_FFmpegVideoToImages (extracting frames from a source video), from an external tool, or from a batch render you already saved to a folder with KY_SaveImageSequence, they're on disk, not sitting in VRAM as a tensor. Re-loading them all back into ComfyUI as an IMAGE batch just to hand them to KY_SaveVideo wastes memory for no reason - this node skips that round-trip and lets ffmpeg read the files directly.
Inputs that matter
input_dir/output_path- the source frame folder and the destination video file. No defaults worth keeping; the schema ships Windows-style placeholder paths (C:/path/to/...) that make it obvious you're expected to override both.input_fps- a long dropdown of standard rates from 2 up to 59.94+, matching the source frame rate your images were extracted or rendered at.encoder_name-libx264(default, safe, CPU, broadly compatible),h264_nvenc/hevc_nvenc(GPU-accelerated, but only work if ffmpeg was built with NVENC support and you actually have an NVIDIA GPU available to it),libx265,prores_ks,libvpx-vp9.quality_type- CRF, QP, or Bitrate. This changes whatquality_valueactually means, which is the trap worth flagging up front (see Common issues).colorspace_choice(BT.709 HD / BT.2020 UHD-HDR / Unspecified) andpix_fmt- for matching whatever your downstream player or editor expects; leave at the HD default unless you know you need otherwise.
Optionally, audio_in_path lets you mux an audio track in alongside the video, with audio_codec (aac/copy) and audio_shortest (default true - trims the output to the shorter of the video or audio stream, rather than padding or looping to match).
One output: video_path, the finished file's location. It's marked an output node, so it writes to disk as its side effect.
Installing it
ComfyUI Manager: search ComfyUI-KYNode, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/yorkane/ComfyUI-KYNode
Restart ComfyUI. Like the rest of the KY_FFmpeg* family, this needs ffmpeg itself installed and reachable on your system PATH - the pack's own README doesn't call this dependency out explicitly, so it's easy to miss until the node fails on first use. Run ffmpeg -version from wherever ComfyUI's process actually runs to confirm before you troubleshoot anything else.
Common issues
quality_value means a genuinely different thing depending on quality_type. A value of 18 under CRF is a well-known "visually lossless" x264 setting; that same 18 under QP or Bitrate mode is a completely different number with a completely different effect. Check which mode you're in before assuming a familiar CRF number will behave the same way.
h264_nvenc/hevc_nvenc will fail - often with a cryptic ffmpeg error rather than a clear "no GPU found" message - if your ffmpeg build wasn't compiled with NVENC support, or if there's no compatible NVIDIA GPU visible to the process. Run ffmpeg -encoders | grep nvenc first if you're not sure your setup actually supports it; if it comes back empty, stick with libx264.
audio_shortest defaulting to true means a longer audio track than your video gets silently cut short, not looped or padded - if your final video's audio ends early and you didn't expect that, this is the setting to check.
And since the node writes to a real file path, make sure the destination directory in output_path actually exists - the schema doesn't document whether it auto-creates missing folders, so pre-creating the destination is the safe move.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| input_dir | STRING | C:/path/to/input/frames | — |
| output_path | STRING | C:/path/to/output.mp4 | — |
| input_fps | COMBO | 30 | 14 options: 2, 3, 6, 12, 15, 23.976, +8 |
| encoder_name | COMBO | libx264 | 6 options: libx264, h264_nvenc, libx265, hevc_nvenc, prores_ks, libvpx-vp9 |
| quality_type | COMBO | CRF (Constant Rate Factor) | 3 options: CRF (Constant Rate Factor), QP (Quantization Parameter), Bitrate (k/M) |
| quality_value | COMBO | 18 | 24 options: 12, 13, 14, 15, 16, 17, +18 |
| colorspace_choice | COMBO | BT.709 (HD) | 3 options: BT.709 (HD), BT.2020 (UHD/HDR), Unspecified |
| pix_fmt | COMBO | yuv420p | 7 options: yuv420p, yuv420p10le, yuv444p, yuv444p10le, nv12, p010le, +1 |
| audio_in_pathopt | STRING | — | |
| audio_codecopt | COMBO | aac | 2 options: aac, copy |
| audio_shortestopt | BOOLEAN | true | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |