Trim MP4
Trimming an MP4 has two flavours: fast copy at keyframe boundaries (seconds, no quality loss, cuts snap to the nearest I-frame) or sample-accurate re-encode (slower, exact frame precision). Here's the ffmpeg command for each and when to pick which.
What actually changes
MP4 files are structured around keyframes (I-frames) - full-picture frames that appear every 1-10 seconds. Between them sit P-frames and B-frames that only encode what changed since the previous keyframe. Trimming has two mechanics: keyframe-boundary copy (start and end snap to the nearest I-frame, no re-encode needed, very fast) or sample-accurate cut (start and end are exact, but everything between the requested start and the next keyframe must be re-encoded). Copy vs. re-encode is the same choice covered in Remux vs re-encode - same trade-offs, applied to trimming.
For most cuts you want the fast path. The ffmpeg command: `ffmpeg -ss 00:01:30 -to 00:03:45 -i input.mp4 -c copy output.mp4` seeks to 1 minute 30 seconds, ends at 3 minutes 45 seconds, and copies streams through. The `-ss` before `-i` uses fast seeking (jumps to the nearest keyframe); the `-to` marks the end. Because -c copy skips re-encoding, the trim takes seconds regardless of clip length.
For sample-accurate cuts, put `-ss` after `-i` and re-encode: `ffmpeg -i input.mp4 -ss 00:01:30 -to 00:03:45 -c:v libx264 -c:a aac output.mp4`. Now ffmpeg reads from the start, decodes to the exact requested start time, and re-encodes the trimmed section. Takes as long as a full re-encode of the trimmed portion (real-time to 3x real-time on modern hardware for 1080p) and adds slight quality loss from the second-generation encode. Only use this when the cut needs to be frame-precise (dropping specific frames, matching a musical beat, syncing to an external cue).
Wave's current build doesn't expose a trim UI. The MP4 conversion path preserves the whole source. A dedicated trim mode with start/end time input is on the roadmap. Until then, for a video that needs a container conversion (from MOV/MKV/WebM) followed by a trim, use Wave for the container step then ffmpeg for the trim. For an MP4 that only needs trimming: ffmpeg locally is the fastest path.
Three steps.
-
01
Step 1
For fast copy trim (keyframe-boundary cuts): ffmpeg -ss <start_time> -to <end_time> -i input.mp4 -c copy output.mp4. Uses HH:MM:SS or seconds format.
-
02
Step 2
For sample-accurate trim (exact frame): ffmpeg -i input.mp4 -ss <start_time> -to <end_time> -c:v libx264 -c:a aac output.mp4. Slower but frame-perfect.
-
03
Step 3
The output is your trimmed clip in the same container format.
Answers, specifically.
Why do my trim endpoints snap to the wrong time?
Because the fast trim path (with -c copy) snaps to keyframe boundaries. The keyframe interval on your source might be 5-10 seconds, so a requested cut at 1:30 might snap to 1:27 or 1:34 depending on where the nearest I-frame is. For exact cuts, use the sample-accurate command (re-encode) instead.
How long does trimming take?
Fast path (copy): seconds regardless of source length - the operation is bounded by disk speed, not CPU. Sample-accurate path (re-encode): real-time or slightly faster on modern hardware for 1080p, slower for 4K. A one-minute sample-accurate trim of a 1080p source takes 30-90 seconds.
Does Wave have a trim UI?
Not currently. The Wave converter processes the entire source file. A dedicated trim mode with start/end time inputs is on the roadmap. For today: ffmpeg locally is the fastest path for MP4-to-MP4 trims.
macOS QuickTime Player to trim?
Yes and fast. QuickTime Player → open video → Edit → Trim (or Command+T). Drag the yellow trim handles at both ends. Command+S to save. QuickTime performs a fast trim (keyframe-boundary copy) so no quality loss.
iOS Photos app to trim?
Yes. Photos → video → Edit → drag yellow trim handles at either end → Done → Save as new clip (or Save video which overwrites). Preserves quality; runs in seconds.
Windows Photos app to trim?
Yes. Photos → open video → click "Edit & Create" → Trim. Drag the sliders. Saves as a new copy.
Multi-range trim (cut out sections in the middle)?
ffmpeg doesn't do multi-range trim in one command. Two approaches: (1) run ffmpeg twice to make two clips, then concat them with `ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4`. (2) Use a video editor (iMovie, DaVinci Resolve free) for interactive multi-range editing.