Video Trim
Cut a video to a window — video in, video out, one node. Set `start` and `end` in seconds (12, 12.5) or mm:ss / hh:mm:ss (1:30); leave `end` blank to run to the end of the clip. Optionally change playback `speed` (0.25x–4x; the audio is retimed with it, not pitched into a chipmunk) and force an output `fps`. This is the node to reach for when you want \"the first 10 seconds\" — before it, the only path was Media Splitter (which emits an ARRAY of segment urls) plus a JSON extract to pick one back out. ⚠️ THIS IS A RE-ENCODE of the trimmed window (x264, default CRF 18, near-visually-lossless), NOT a stream copy: a stream copy can only cut on keyframes, so \"start at 3.2s\" would silently become \"start at 2.0s\". Colour metadata is carried across from the source. AUDIO IS STREAM-COPIED at 1x speed and re-encoded (AAC 192k, atempo) only when speed changes it. Start/end outside the real clip are REFUSED with the numbers, never quietly clamped to fit. THE SOURCE MAY BE ANY LENGTH — \"the first 10 seconds of a 40-minute master\" is the point of the node; it is the CUT that is bounded, at 180s and priced from the real probe in megapixel-seconds (so a short 4K window is fine where a long one is not). The source file itself is capped at 1.5 GB, checked by a HEAD before the download and aborted mid-transfer, never after. Calls a Lambda whose cost is operational and absorbed: this node quotes and charges 0 credits.
Video Trim
Node type: utility:video_trim
Category: Editing
Description
Cut a video to a window — video in, video out, one node. Set start and end in seconds (12, 12.5) or mm:ss / hh:mm:ss (1:30); leave end blank to run to the end of the clip. Optionally change playback speed (0.25x–4x; the audio is retimed with it, not pitched into a chipmunk) and force an output fps. This is the node to reach for when you want "the first 10 seconds" — before it, the only path was Media Splitter (which emits an ARRAY of segment urls) plus a JSON extract to pick one back out. ⚠️ THIS IS A RE-ENCODE of the trimmed window (x264, default CRF 18, near-visually-lossless), NOT a stream copy: a stream copy can only cut on keyframes, so "start at 3.2s" would silently become "start at 2.0s". Colour metadata is carried across from the source. AUDIO IS STREAM-COPIED at 1x speed and re-encoded (AAC 192k, atempo) only when speed changes it. Start/end outside the real clip are REFUSED with the numbers, never quietly clamped to fit. THE SOURCE MAY BE ANY LENGTH — "the first 10 seconds of a 40-minute master" is the point of the node; it is the CUT that is bounded, at 180s and priced from the real probe in megapixel-seconds (so a short 4K window is fine where a long one is not). The source file itself is capped at 1.5 GB, checked by a HEAD before the download and aborted mid-transfer, never after. Calls a Lambda whose cost is operational and absorbed: this node quotes and charges 0 credits.
Canvas ports
These appear as port handles on the left side of the node.
| ID | Label | Details |
|---|---|---|
video |
Video | VIDEO (required) |
Sidebar config
These render as form fields in the right-side config panel when the node is selected.
| ID | Label | Details |
|---|---|---|
start |
Start (seconds or mm:ss) | TEXT |
end |
End (seconds or mm:ss; blank = end of clip) | TEXT |
speed |
Speed (0.25–4; blank = 1x) | NUMBER |
fps |
Output FPS (blank = keep source) | NUMBER |
crf |
Quality (CRF, 12 best … 30 smallest; blank = 18) | NUMBER |
Outputs
| ID | Label | Type |
|---|---|---|
video |
Trimmed Video | VIDEO |
What it is for
Give me the first ten seconds. Video in, video out, one node.
Before this node existed the only way to cut a clip was the Media Splitter, which emits an array of segment urls, plus a JSON Extract to pick one back out of that array. Two nodes, a JSON detour, and no video port anywhere in the middle. Video Trim is the direct path: wire a video, set a start and an end, run.
Setting the window
Both boxes accept plain seconds (12, 12.5) or a timecode
(1:30, 0:01:30).
Leave End blank to run to the end of the clip. Blank means "to the end", not zero. An empty box is never read as a number here.
If the window you asked for does not fit the clip, the node refuses and shows you both numbers. It does not quietly trim your request to fit. A silent clamp is invisible: the run succeeds, the file plays, and the only way to notice is to count the seconds yourself.
Speed and frame rate
Speed runs 0.25x to 4x. The audio is retimed along with the picture
(ffmpeg's atempo), so a 2x clip sounds fast rather than pitched up like a
chipmunk. Those bounds are not arbitrary: atempo retimes cleanly over
0.5x to 2x per stage and this node composes two stages, which is exactly
0.25x to 4x. Ask for more and it says so rather than half-applying it. Chain
two Video Trim nodes if you really want 8x.
Output FPS is blank by default, meaning "keep whatever the source has". Set it when a downstream consumer needs a specific frame rate.
At 1x speed the audio is stream-copied, byte-for-byte. It is only re-encoded when the speed change makes that unavoidable.
Why it re-encodes
Trimming is a re-encode (x264, CRF 18, near-visually-lossless), not a stream
copy, and that is deliberate. A stream copy can only cut on keyframes, so
"start at 3.2s" would silently become "start at 2.0s", a cut you did not ask
for and cannot see. Correct beats fast. Lower crf for less generation loss,
raise it for a smaller file.
Colour metadata is carried across from the source, so a trimmed clip looks identical to the stretch of source it came from.
Limits
The source can be any length. "The first 10 seconds of a 40-minute master" is the point of the node, so it is the CUT that is bounded, not the thing you cut from.
The window is capped at 180 seconds, and the encode is priced from the real probe in megapixel-seconds, refused with the arithmetic when it will not finish in one pass. That is why a short cut out of a 4K master is fine where a long one is not. Need more than 180s? Chain two Video Trim nodes into a Video Concat.
The source FILE is capped at 1.5 GB, checked with a HEAD request before the download starts and aborted mid-transfer if the server would not answer one. No refusal here waits until after you have paid for the whole file.
This node calls a Lambda whose cost is operational and absorbed: it quotes and charges 0 credits.
Auto-generated from the Wireflow node registry.