Nodes/ComfyUI-FFMPEGA/Video Editor (FFMPEGA)
ComfyUI Node

Video Editor (FFMPEGA)

A mini non-linear editor inside ComfyUI — with keyboard shortcuts

By AEmotionStudio·Created 8 months ago·Updated 2 days ago· 16
Video Editor (FFMPEGA)
  • images
  • audio
  • mask
  • images
  • video_path
  • audio
  • mask_points
  • mask
pause_on_inputtrue
auto_open_editorfalse
video_path
fps0.00
mask_points

FFMPEG Agent is great at "make it cinematic," but it's the wrong tool for "cut out the first three seconds, crop this section, and put a transition between these two clips." That's where Video Editor (FFMPEGA) comes in: it's a real non-linear editor - timeline, razor tool, crop, speed, volume, text overlays, transitions - running in a modal inside ComfyUI. The full pause_on_input default means the workflow literally stops, opens the editor, waits for you to make cuts, and only continues when you click Continue. It's like a tiny Premiere that lives in your graph.

The key design decision is that nothing is edited in memory - the timeline is a description of edits, and FFmpeg renders it on export. So the same trim you'd agonize over with an LLM prompt becomes a mouse action, and the output is still deterministic. And if you make no edits at all, the node passes the input straight through with zero re-encoding - a genuinely thoughtful detail that means you can leave it in a workflow without paying a quality or time penalty.

The inputs that matter

  • pause_on_input - default On. When On, the workflow pauses and shows the editor so you can actually edit; when Off it passes through unedited. Keep it On unless you're deliberately using the node as a passthrough.
  • auto_open_editor - default Off, meaning you open the editor modal manually with a button. Flip it On if you want the editor to pop up automatically the moment a video arrives.
  • video_path - the source file (or connect images as a tensor batch, or both, plus audio to associate a track). fps 0 = auto-detect from the source; set it manually only if the source is ambiguous.

Outputs: images (all frames of the edited result), video_path (the rendered output - chain into Save Video), audio, plus fps and frame_count for downstream wiring, and mask_points pass-through.

Editing itself uses familiar conventions: Space play/pause, J/K/L shuttle, I/O set in/out, R razor, V select, arrow keys step frames, ? shows the shortcut overlay. Select, split, delete, crop, change speed/volume, drop a text overlay, add a transition - then export.

Installing it

It's bundled in ComfyUI-FFMPEGA, so install the pack: ComfyUI Manager → search ComfyUI-FFMPEGA → Install, or:

cd ComfyUI/custom_nodes
git clone https://github.com/AEmotionStudio/ComfyUI-FFMPEGA.git
cd ComfyUI-FFMPEGA
pip install -r requirements.txt

Restart ComfyUI. FFMPEG on PATH is required - the editor is a front end, ffmpeg does the actual render.

Where people get burned

The most common stumble is confusion about when editing happens: the editor appears because the node paused - if you changed pause_on_input to Off, there's nothing to edit, by design. And remember that edits render through ffmpeg on export, so a heavy edit (long clip, transitions, speed changes) can take a while - the pause is the point, not the bug. Keep the "one task per run" instinct in mind here too: use the editor for structural cuts, and let the Agent handle the look.

CategoryFFMPEGA

Inputs (8)

NameTypeDefaultDescription
pause_on_inputBOOLEANtrueWhen ON, pauses the workflow and shows the editor. Click Continue to pass the edited clip downstream. When OFF, passes through without editing.
auto_open_editorBOOLEANfalseWhen ON, the editor modal automatically opens when a video arrives. When OFF, click the Open Editor button manually.
imagesoptIMAGEVideo frames as IMAGE tensor batch [N,H,W,3].
video_pathoptSTRINGPath to a video file on disk.
audiooptAUDIOAudio track to associate with the video.
fpsoptFLOAT0.000–120Framerate for IMAGE tensor input. 0 = auto-detect from source.
mask_pointsoptSTRINGOptional upstream mask_points pass-through. Forwarded as-is to the mask_points output for downstream nodes.
maskoptMASKOptional upstream MASK tensor. When connected, the mask track is synchronized with video edits (segments, cuts, trims apply identically). Forwarded to the mask output.

Outputs (5)

NameTypeDescription
imagesIMAGE
video_pathSTRING
audioAUDIO
mask_pointsSTRING
maskMASK