Nodes/ComfyTV/Strobe
ComfyUI Node

Strobe

Make your footage blink to a beat — without paying per node

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Strobe
  • video
  • video
force_run_token0
project_id
parent_output_id0
interval3
strobe_modeblack
invertfalse

Strobe is the video-editing equivalent of a blinking neon sign: frames go dark (or flash white, or freeze) on a regular rhythm. It's the effect behind every music-video cut that pulses to the kick drum, and it's one of the cheapest ways to make a boring AI-generated clip feel like it was edited on purpose.

This is a ComfyTV stage, which means it's part of that pack's big idea: every operation is its own node with its own Run button, and results flow downstream as snapshots instead of dragging the whole graph through the queue. You wire a video into video, hit Run on this stage, and you get a strobed clip back without re-running whatever generated it.

What you actually set

  • interval (default 3, 1–120) - the strobe cycle length in frames, not seconds. At 3 you get a fast chop; crank it toward 120 for a slow, almost-stroboscopic flutter.
  • strobe_mode - black (default), white, or hold. Black blinks to black, white flashes to white, hold freezes the last shown frame instead of blanking it.
  • invert - flips the pattern so the opposite frames get strobed.

That's the whole surface. The project_id, parent_output_id, and force_run_token inputs are internal bookkeeping the frontend fills in - leave them alone.

How it works

Strobe runs as a tiny torch op over the frame sequence, not as a re-encode. It keeps a frame counter and blanks (or holds) every frame past the halfway point of each interval window. Because it's a per-frame function, it's trivial to preview live in the node and it plays perfectly in a chain.

That last bit is the part worth caring about. Like most ComfyTV FX stages, Strobe doesn't necessarily commit to disk when it runs - it appends its effect to a spec that travels with the video payload. Stack Strobe after a color grade and before an FX Chain, and the whole stack renders in a single pass with one encode, not three. In ComfyTV's own words, FX stages stack and render "in a single pass, with a live preview of the combined result." So don't be surprised that Run feels instant: the expensive part only happens when a file actually has to be produced.

Install

ComfyTV ships ~190 stages in one pack, so installing the pack installs Strobe too.

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI (a real backend restart, not a browser refresh) and find it under the ComfyTV → VideoFX submenu. ComfyUI Manager can find it too if you search "ComfyTV". No model downloads, and the pack's pyproject declares zero Python dependencies - the one genuinely pleasant thing about the install. On ComfyUI Desktop or macOS, the README warns the relative cd can land in the wrong ComfyUI instance; read the startup log for the running instance's absolute path and clone there instead.

Troubleshooting

  • Run does nothing / no output file. Strobe needs an upstream video wired in; _need_video will error with "needs an upstream video." It's an FX stage, so a Run with no downstream consumer that needs a file may produce just a preview - feed it into an FX Chain or export stage to force the bake.
  • The blink is on the wrong beats. interval is frame-based, so at 24 fps an interval of 3 is 8 chops per second. If you want it locked to music, pick an interval that divides into your framerate, or drive it with ComfyTV's audio-reactive automation.

Strobe is a one-trick node, but it's a good trick, and the fact that it doesn't force a re-encode every time you tweak it is the whole reason it beats doing this with a full video editor.

CategoryComfyTV/VideoFX

Inputs (7)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
intervalINT31–120
strobe_modeCOMBOblack3 options: black, hold, white
invertBOOLEANfalse
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO