Extensions/First Frame & Last Frame Extractor
ComfyUI Extension

First Frame & Last Frame Extractor

Extract the first and last frame from any video file or image batch in ComfyUI.

By RmaNMetaverse·Created about a month ago·Updated about a month ago· 6
RmaNMetaverse/ComfyUI-FirstframeLastframeExtractor
Nodes
On cloudLocal install
Stars6
Updatedabout a month ago
Readme

ComfyUI-FirstframeLastframeExtractor 🎬

Extract the first frame and last frame from any video — directly in your ComfyUI workflow.

A lightweight, zero-config utility node for ComfyUI that takes any video input and returns the first and last frames as standard IMAGE outputs. Works with direct file paths and image batches from other nodes like VideoHelperSuite.*


✨ Features

  • 🎯 Dual Input Mode — Accepts a video file path (STRING) or a pre-loaded image batch (IMAGE) from other nodes
  • 🔄 Auto Detection — Connect whichever input you have; the node handles the rest
  • 🎥 Broad Codec Support.mp4, .avi, .mkv, .mov, .webm, .gif and more via OpenCV
  • 🛡️ Robust Fallback — If the codec doesn't support direct seeking, falls back to sequential reading
  • Lightweight — No heavy dependencies beyond what ComfyUI already ships with
  • 🔗 Universal Compatibility — Works with all ComfyUI versions using the stable node API

📦 Installation

Option A — ComfyUI Manager (Easiest)

If you have ComfyUI Manager installed (it comes pre-installed with Comfy Desktop):

  1. Open ComfyUI and click the Manager button
  2. Click "Install Custom Nodes"
  3. Search for "FirstFrameLastFrame" or "First Frame Last Frame"
  4. Click Install → Restart ComfyUI

ComfyUI Manager handles cloning and dependency installation automatically.


Option B — ComfyUI Portable (Windows Standalone)

This is the most common Windows setup — the one you download as a .7z or .zip from the ComfyUI releases page.

Step 1: Clone the node

Open a Command Prompt or PowerShell window and navigate to your portable folder:

cd ComfyUI_windows_portable\ComfyUI\custom_nodes
git clone https://github.com/RmaNMetaverse/ComfyUI-FirstframeLastframeExtractor.git

Step 2: Install requirements

[!IMPORTANT] You must use the embedded Python that ships with the portable version, not your system Python. Otherwise the packages will be installed in the wrong place and ComfyUI won't see them.

Navigate back to the portable root folder and run:

cd ComfyUI_windows_portable
.\python_embeded\python.exe -m pip install -r .\ComfyUI\custom_nodes\ComfyUI-FirstframeLastframeExtractor\requirements.txt

Step 3: Restart ComfyUI.


Option C — Comfy Desktop (Electron App)

Comfy Desktop runs its own isolated Python environment. It also comes with ComfyUI Manager pre-installed, so Option A above is the recommended method.

If you need to install manually:

Step 1: Clone the node

Find your Comfy Desktop's custom_nodes folder. The typical location is:

| OS | Path | |:---|:-----| | Windows | C:\Users\<YOU>\AppData\Roaming\ComfyUI\custom_nodes\ | | macOS | ~/Library/Application Support/ComfyUI/custom_nodes/ | | Linux | ~/.config/ComfyUI/custom_nodes/ |

cd <path_to_custom_nodes>
git clone https://github.com/RmaNMetaverse/ComfyUI-FirstframeLastframeExtractor.git

Step 2: Install requirements

Locate the python_embeded (or python) folder inside your Comfy Desktop installation directory, then run:

"<path_to_comfy_desktop_python>\python.exe" -m pip install -r "<path_to_custom_nodes>\ComfyUI-FirstframeLastframeExtractor\requirements.txt"

[!TIP] The easiest way to find the right Python path: open Comfy Desktop → Manager → click "Open Terminal" — this opens a terminal pre-configured with the correct Python. Then just run:

pip install -r custom_nodes/ComfyUI-FirstframeLastframeExtractor/requirements.txt

Step 3: Restart Comfy Desktop.


Option D — Manual Install (pip / venv / conda)

For users who installed ComfyUI manually via git clone into a virtual environment or conda environment:

Step 1: Clone the node

cd ComfyUI/custom_nodes/
git clone https://github.com/RmaNMetaverse/ComfyUI-FirstframeLastframeExtractor.git

Step 2: Install requirements

Make sure your virtual environment is activated first, then:

pip install -r ComfyUI/custom_nodes/ComfyUI-FirstframeLastframeExtractor/requirements.txt

Step 3: Restart ComfyUI.


Option E — Manual Download (No Git)

  1. Go to the GitHub repo
  2. Click Code → Download ZIP
  3. Extract the folder into your ComfyUI/custom_nodes/ directory
  4. Make sure the folder structure is correct — __init__.py should be directly inside custom_nodes/ComfyUI-FirstframeLastframeExtractor/ (no double nesting)
  5. Install requirements using the method for your ComfyUI version (see above)
  6. Restart ComfyUI

🚀 Quick Start

  1. Right-click the ComfyUI canvas
  2. Navigate to Add Node → Video/Utils → First Frame & Last Frame Extractor 🎬
  3. Connect an input (see below)
  4. Wire the outputs to Preview Image, Save Image, or any downstream node
  5. Queue the prompt

🔧 Node Reference

Inputs

| Name | Type | Required | Description | |:------------ |:-------- |:--------:|:------------------------------------------------------------------------------- | | video_path | STRING | Optional | Absolute path to a video file (.mp4, .avi, .mkv, .mov, .webm, .gif) | | images | IMAGE | Optional | Image batch tensor from another node (e.g., VHS Load Video) |

[!NOTE] At least one input must be provided. If both are connected, the image batch takes priority.

Outputs

| Name | Type | Description | |:------------- |:------- |:------------------------------------------------ | | first_frame | IMAGE | The very first frame of the video [1, H, W, C] | | last_frame | IMAGE | The very last frame of the video [1, H, W, C] |

Category

📁 Video/UtilsFirst Frame & Last Frame Extractor 🎬


💡 Usage Examples

Example 1: Direct File Path

Paste or type a video file path directly into the node — no other nodes needed.

┌─────────────────────────────────┐       ┌────────────────┐
│ First Frame & Last Frame Extractor 🎬 │       │                │
│                                 │       │  Preview Image │
│  video_path: C:\video.mp4      ├──────►│                │
│                                 │       └────────────────┘
│                 first_frame  ○──┤
│                  last_frame  ○──┼──────►┌────────────────┐
│                                 │       │   Save Image   │
└─────────────────────────────────┘       └────────────────┘

Example 2: From VideoHelperSuite (VHS)

Connect the IMAGE output of a VHS Load Video node to extract the boundary frames from a loaded sequence.

┌──────────────────┐       ┌─────────────────────────────────┐       ┌────────────────┐
│  VHS Load Video  │       │ First Frame & Last Frame Extractor 🎬 │       │                │
│                  │       │                                 │       │  Preview Image │
│        IMAGE  ○──┼──────►│  images                        ├──────►│                │
│                  │       │                 first_frame  ○──┤       └────────────────┘
└──────────────────┘       │                  last_frame  ○──┤
                           │                                 │
                           └─────────────────────────────────┘

Example 3: Frame-to-Frame Comparison

Use both outputs for side-by-side comparison, img2img pipelines, or interpolation workflows.


🔗 Compatibility

| Component | Supported | |:----------- |:---------------------------------------------------------------- | | ComfyUI | All versions (stable NODE_CLASS_MAPPINGS API) | | Python | 3.8+ | | OS | Windows, Linux, macOS | | Interop | VideoHelperSuite (VHS), or any node that outputs IMAGE batches |


🛠️ Dependencies

| Package | Notes | |:-------------------------------- |:--------------------------------- | | opencv-python-headless ≥ 4.5.0 | For reading video files from disk | | torch | Already included in ComfyUI | | numpy | Already included in ComfyUI |


🧪 Running Tests

A smoke test suite is included for local verification:

cd ComfyUI-FirstframeLastframeExtractor
python test_node.py

📄 License

This project is licensed under the MIT License.


🤝 Contributing

Contributions, issues, and feature requests are welcome! Feel free to open an issue or submit a pull request.


👤 Author

RmaN (Arman Jangmiri)


<p align="center"> Made with ❤️ by RmaN for the ComfyUI community </p>