Adjust Speed

Change video playback speed (0.05x slow-mo to 100x hyper-speed), reverse, time-remap with piecewise segments, with optional motion-compensated frame interpolation.

Overview

The Adjust Speed (Speed Ramp) node is a pure-FFmpeg post-processor. It changes the playback speed of any input video, optionally reverses it, and optionally interpolates new in-between frames for cinematic slow-motion. For shots that need varying speed across the clip (the classic “normal → slow-mo → normal” action-cam beat), it supports a piecewise time remap defined by start/end/speed segments.

It is distinct from the Temporal parameter picker — Temporal nudges the AI generator’s prompt with motion-character text (“slow motion, reverse playback”), Adjust Speed actually warps the rendered video frames.

Configuration

Field Type Default Description
Speed number 1.0 Constant speed factor, 0.05× to 100×. Ignored when ramps is non-empty.
Reverse bool false Reverse playback (applied after speed change). Audio is also reversed in pitch-preserve / pitch-shift modes.
Audio mode enum pitch-preserve pitch-preserve (natural voice, atempo chain), pitch-shift (chipmunk/giant, asetrate), or drop.
Frame quality enum fast fast (frame-duplicate via setpts, 2 credits) or smooth (motion-compensated minterpolate, 5 credits, ~5-20× slower to render).
Ramps array [] Piecewise segments — { start, end, speed } tuples in input seconds. Sorted ascending, non-overlapping. Audio is forced to drop while ramps are active.
adjustAudio bool - Deprecated. Legacy field — when present and audioMode is unset, true maps to pitch-preserve, false to drop. New workflows should use audioMode.

Inputs & Outputs

Inputs:

Outputs:

How it works

Setting FFmpeg primitive
Constant speed setpts=PTS/speed (video) + chained atempo (audio)
Reverse reverse + areverse
Pitch-shift audio asetrate=44100*speed,aresample=44100
Smooth frames minterpolate=fps=60:mi_mode=mci:mc_mode=aobmc:me_mode=bidir
Ramps Piecewise setpts expression — output PTS at input time T is the cumulative output duration of all earlier segments plus (T - start[k]) / speed[k] for the segment containing T

The setpts expression for ramps is built in backend/src/providers/video/speed-ramp.ts::buildRampSetptsExpression. Test coverage lives in __tests__/speed-ramp-expr.test.ts.

Credit pricing

Mode Credits
fast (default) 2
smooth 5

Composite credit identifier: speed-ramp:smooth when quality === "smooth", otherwise speed-ramp. Both are seeded in STATIC_CREDIT_COSTS and the route’s creditGuard dispatches based on the request body.

The 5 cr smooth-mode price is a flat ~2.5× of fast. Real CPU time is closer to 5-20×, so heavy use should be monitored via the credit-anomaly audit (/admin/credit-anomalies).

Best Practices

Limitations

Common Use Cases

Tips

See Also