Hard Cut — effect skill for cuts & pacing

For AI agents: find the right skill in one call — curl -s "https://varg.ai/how-to/api/search?q=<what the person wants>" returns the matching how-to page and the best skills with install commands, as markdown (Russian works too). Full index: https://varg.ai/how-to/llms.txt. Every page has a markdown twin: add .md to its path. Before generating anything, show the person the options on the how-to page.

One shot ends, the next begins on the very next frame. The default join: invisible when the content flows.

What it does

Frame N is shot A, frame N+1 is shot B. No overlap, no effect.

When: Most joins in any edit. Use it whenever the change of shot is motivated by story, speech or rhythm.

Watch out: Two near-identical framings of the same subject cut together read as a mistake (a jump cut) unless you mean it.

Timing: 0 frames

Also called: straight cut, cut, butt cut

In FFmpeg

Re-encode with the concat filter (any sources) or losslessly with the concat demuxer (identical codecs).

ffmpeg -i a.mp4 -i b.mp4 -filter_complex \
"[0:v]trim=2:5,setpts=PTS-STARTPTS[v0];[0:a]atrim=2:5,asetpts=PTS-STARTPTS[a0];\
 [1:v]trim=0:3,setpts=PTS-STARTPTS[v1];[1:a]atrim=0:3,asetpts=PTS-STARTPTS[a1];\
 [v0][a0][v1][a1]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" out.mp4

In HyperFrames

<video id="a" src="a.mp4" data-start="0" data-duration="3" data-media-start="2" data-track-index="0" data-has-audio="true"></video>
<video id="b" src="b.mp4" data-start="a" data-duration="3" data-track-index="0" data-has-audio="true"></video>

data-start="a" means "start when clip a ends".

In Remotion

import {Series} from 'remotion';
import {Video} from '@remotion/media';

<Series>
  <Series.Sequence durationInFrames={90}><Video src={staticFile('a.mp4')} trimBefore={60} /></Series.Sequence>
  <Series.Sequence durationInFrames={90}><Video src={staticFile('b.mp4')} /></Series.Sequence>
</Series>

trimBefore replaced startFrom in v4.0.319.

In CapCut

Put the playhead on the cut point and Split (Ctrl/Cmd+B on desktop, Split in the bottom toolbar on mobile), delete the unwanted part; clips on the main track snap together.

In MoviePy

from moviepy import VideoFileClip, concatenate_videoclips
a = VideoFileClip('a.mp4').subclipped(2, 5)
b = VideoFileClip('b.mp4').subclipped(0, 3)
concatenate_videoclips([a, b]).write_videofile('out.mp4')

Where this comes from

Use when

Not for

Install

Example output

https://s3.varg.ai/how-to/previews/5c397ed672a5/take-hard-cut.mp4 — cut between two shots, with the timeline strip of the edit. Footage: Big Buck Bunny (2008), (c) copyright 2008, Blender Foundation | www.bigbuckbunny.org, CC BY 3.0; WING IT! (2023), Blender Studio | studio.blender.org, CC BY 4.0. (credit: Rendered by varg · Big Buck Bunny (2008) + WING IT! (2023))

More cuts & pacing skills