Skip to content

room3dev/ComfyUI-FrameIO

Repository files navigation

ComfyUI-FrameIO

High-performance frame input/output nodes for AI video pipelines in ComfyUI.

ComfyUI-FrameIO focuses on efficient frame storage, loading, and reuse for long video generation workflows, solving common problems like massive PNG sizes, duplicate frames, and fragile filename-based loading.


✨ Features

🧩 Frame Saving

  • Save batch IMAGE tensors as WebP
  • Lossy or Lossless WebP
  • Skip identical frames using hash-based deduplication
  • Massive disk space reduction vs PNG
  • Returns STRING_LIST (ComfyUI list-native)

πŸ“₯ Frame Loading

  • Pattern-based frame loading
  • STRING_LIST β†’ IMAGE loader (no filename guessing)
  • Frame range selector (start, end, step)
  • Auto-detect frame count (set frame_count=0)
  • Execution Trigger node for flow control
  • List Video Files node to scan input directory
  • Safe with duplicate paths (from deduplication)

⚑ Optimized for AI Video

  • Multi-threaded IO for high-speed saving & loading
  • Direct PyTorch normalization (avoids slow CPU/NumPy conversions)
  • Designed for long sequences
  • Works with WebP / PNG / JPG
  • Preserves exact frame ordering
  • Security restricted (saves only to ComfyUI output directory)

πŸ“¦ Included Nodes

πŸ”Ή Batch Save Image Sequence (WebP)

Save an image batch efficiently to disk.

Inputs

  • images (IMAGE)
  • path_pattern (STRING)
  • start_index (INT)
  • lossless (true / false)
  • quality (INT)
  • skip_identical (true / false)
  • overwrite (true / false)

Outputs

  • paths (STRING_LIST)
  • count (INT)

πŸ”Ή Batch Load Image Sequence

Load images from disk using a filename pattern.

Inputs

  • path_pattern (STRING) - e.g., ./frame{:06d}.webp
  • start_index (INT)
  • frame_count (INT) - Set to 0 to auto-detect all available frames
  • ignore_missing_images (true / false)

Outputs

  • images (IMAGE)
  • count (INT)

πŸ”Ή Batch Load Image Sequence (Trigger)

Same as the standard sequence loader, but includes an optional trigger input. Useful for forcing ComfyUI to wait for a previous node (like a video render) to finish before loading.


πŸ”Ή Batch Load Image List (Advanced)

Load images directly from a STRING_LIST.

Inputs

  • paths (STRING_LIST)
  • start (INT, optional)
  • end (INT, optional)
  • step (INT, optional)

Outputs

  • images (IMAGE)
  • count (INT)

This is the recommended loader when using frame deduplication.


πŸ”Ή List Video Files (Input Dir)

Scans your ComfyUI input folder for video files.

Inputs

  • subfolder (STRING) - Subfolder within the input directory.
  • filter (STRING) - Wildcard filter (default *).
  • load_cap (INT) - Maximum number of files to return (default 100, 0 for no limit).
  • deep_search (true / false) - Search subdirectories recursively (default false).

Outputs

  • paths (STRING_LIST) - List of absolute paths.
  • count (INT) - Number of files found.

🧠 Why ComfyUI-FrameIO?

Problem Solution
PNG sequences too large WebP (5–10Γ— smaller)
Duplicate frames Hash-based skip
Filename guessing STRING_LIST loader
Partial re-render Frame range selector
Long videos Optimized IO

🎬 Recommended Workflows

πŸ”₯ Best Practice (Long Videos)


KSampler
↓
Batch Save Image Sequence (WebP)
↓ STRING_LIST
Batch Load Image List (Advanced)
↓ IMAGE
Video Combine / FFmpeg

🎯 Partial Reload

  • start = 300
  • end = 900
  • step = 2

Perfect for re-encoding or post-processing sections.


βš™οΈ Recommended Settings

Use Case Settings
Final video Quality 95, Skip Identical = true
Iteration Quality 90
Dataset / archival Lossless = true
Static shots Skip Identical = true

πŸ“₯ Installation

cd ComfyUI/custom_nodes
git clone https://github.com/room3dev/ComfyUI-FrameIO.git

Restart ComfyUI.

Nodes will appear under:

FrameIO

πŸ“„ License

MIT

About

High-performance frame IO nodes for AI video pipelines in ComfyUI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages