Nodes/WhiteRabbit/🐇 RIFE Seam Timing Analyzer
ComfyUI Node

🐇 RIFE Seam Timing Analyzer

It solves the math so your loop seam stops looking like a jump cut

By Artificial-Sweetener·Created about a year ago·Updated about a month ago· 82
🐇 RIFE Seam Timing Analyzer
  • full_clip
  • t_list_csv
  • multiplier
ckpt_namerife47.pth
scale_factor1.00
ensembletrue
multiplier4
use_first_twotrue
use_last_twotrue
use_global_medianfalse
calibrate_metricMSE
calibrate_iters12
t_min0.000
t_max0.960
auto_tmaxfalse
t_cap0.9950

A seamless video loop fails or succeeds in a single instant: the jump from the last frame back to the first. Everything else is just footage. RIFE Seam Timing Analyzer exists to make that instant invisible. It looks at the real motion in your clip, then solves for the exact set of blend positions - the t values between 0 and 1 - that make the last→first transition feel like a completely ordinary step in the motion, instead of a hiccup.

This is the pack's hidden brain. RIFE VFI Custom Timing will happily place frames anywhere you tell it to; this node tells it where. The two were designed as a pair, and the whole loop workflow reads like a production line: Prepare Loop Frames isolates the seam, this analyzer computes the timing, Custom Timing renders the seam, Assemble Loop Frames stitches it back on.

How it works

The node takes your full clip and measures how much motion actually happens in it. You tell it which motion to treat as "normal" - the first two frames (use_first_two), the last two (use_last_two), or the median step across the whole clip (use_global_median, which shrugs off outliers but needs at least 3 frames). Then it renders candidate seam frames with RIFE and solves, using an iterative search (calibrate_iters, default 12) for a set of t values whose motion matches that reference. calibrate_metric picks the scoring function - MSE is more sensitive, L1 more forgiving.

It's a probe, not a render: the model here is "used only to test candidate timings," per the node's own description, and the output is data, not frames.

The inputs that matter

  • full_clip - your actual footage (≥2 frames). Real motion in, good timing out.
  • multiplier - how many new frames you plan to create at the seam. Set it to match the Custom Timing node you'll feed the result into; the output multiplier echoes it back so you can't lose track.
  • use_first_two / use_last_two / use_global_median - what counts as "normal" motion. Defaults use the first and last two pairs, which is a sensible baseline.
  • t_min / t_max - the allowed range for seam blend points. Keep t_max below 1.0 (default 0.96) so the seam doesn't stick to the first frame.
  • auto_tmax (optional) - pushes the upper limit closer to the next frame to hit the target motion step, with a safety t_cap just shy of 1.0. Enable it when the fixed range can't match your clip's motion.

Using it

Feed the t_list_csv output straight into RIFE VFI Custom Timing's custom_t_list_csv, and match the multiplier values. That's the whole integration - no parsing, no hand-copying of 30 decimals.

Installing it

Standard WhiteRabbit install (once for the whole pack):

cd ComfyUI/custom_nodes
git clone https://github.com/Artificial-Sweetener/comfyui-WhiteRabbit
cd comfyui-WhiteRabbit
python -m pip install -r requirements.txt

or ComfyUI Manager → "WhiteRabbit" → install → restart. RIFE checkpoints auto-download into models/frame_interpolation/ on first use.

Where people get burned

  • The multiplier must match. If the analyzer solves for 4 seam frames but Custom Timing is set to 2, you're not using the timing it computed. Match them.
  • A clip that's mostly static. The analyzer needs motion to calibrate against; a locked-off shot gives it nothing to match. use_global_median plus auto_tmax helps, but a clip with zero motion can't produce a meaningful ramp.
  • It's a search, not a render. Higher calibrate_iters gives a tighter match but costs time. Start at the default.

For the person who wants the loop to just work, this node is the difference between "pretty close" and "you can't find the seam." It's the one I'd miss most if the pack vanished.

Categoryvideo utils

Inputs (14)

NameTypeDefaultDescription
ckpt_nameCOMBOrife47.pthChoose RIFE 4.7, 4.9, 4.25, or 4.26 (used only to test candidate timings). Missing catalog models download automatically into ComfyUI's frame_interpolation model folder.
scale_factorFLOAT1.000.25–4Quality vs speed for the probe renders. 1.0 recommended.
ensembleBOOLEANtrueBlend forward & backward predictions to reduce artifacts (slower).
full_clipIMAGEYour input clip (≥2 frames). Real motion here decides the loop seam timing.
multiplierINT4How many new frames you plan to create at the loop seam [last→first]. Set 0 to skip.
use_first_twoBOOLEANtrueMatch the motion between the first two frames in your clip.
use_last_twoBOOLEANtrueMatch the motion between the last two frames in your clip.
use_global_medianBOOLEANfalseUse the median motion across the whole clip (needs ≥3 frames). Helps ignore outliers.
calibrate_metricCOMBOMSEHow we compare frames while solving: MSE (more sensitive) or L1 (more forgiving).
calibrate_itersINT124–24Search depth per solve. Higher = slower, but a tighter match.
t_minFLOAT0.0000–1Earliest allowed blend point at the seam (0 = exactly the last frame).
t_maxFLOAT0.9600–1Latest allowed blend point at the seam (keep below 1.0 to avoid sticking to the first frame).
auto_tmaxoptBOOLEANfalseAutomatically push the upper limit closer to the next frame to hit the target motion step.
t_capoptFLOAT0.99500.5–0.9999Safety cap used with the auto upper limit (keeps it just shy of 1.0).

Outputs (2)

NameTypeDescription
t_list_csvSTRING
multiplierINT