What I've found to be trickier is dividing a video into multiple clips, where one clip can start at the end of another, but not necessarily.
It's surprisingly handy to have something like this hanging around; I just use mine to fix up screen caps.
Commenting mostly because when I did this I thought I was doing something very silly, and I'm glad I'm not completely crazy.
Just bundle it
How do I know? I built one (https://github.com/rclone-ui/rclone-ui)
file 'file1.mp4'
file 'file2.mp4'
file 'file3.mp4'
Then call ffmpeg like this: ffmpeg -f concat -i files.txt -c copy output.mp4
And I guess you could make an LLM write a {G,T}UI for this if you really want.- I haven't implemented audio support yet, but it would be nice
- I like --dry-run
- I didn't use a TUI widget library, but now it's at the point where it's tedious to refactor the UI / make it prettier
- I like OP's timeline widget
- Wanted to focus on static binaries. I got chafa static linking working for Linux, but haven't bundled ffmpeg yet
- which reminds me of licenses -- chafa and ffmpeg are LGPL iirc
- a couple other notes from early on: https://wonger.dev/posts/chafa-ffmpeg-progress
ffmpegCmd := exec.Command("ffmpeg",
"-ss", fmt.Sprintf("%.3f", position.Seconds()),
"-i", p.path,
"-vf", strings.Join(filters, ","),
"-vframes", "1",
"-f", "image2pipe",
"-vcodec", "bmp",
"-loglevel", "error",
"-",
)Terminal-based video trimming tool. Mark in/out points and export trimmed clips with aspect ratio control.

brew tap emin-ozata/homebrew-tap
brew install lazycut
Download the latest Windows binary from the releases page:
lazycut_X.X.X_windows_amd64.zipExtract and add to your PATH, or run directly.
Dependencies:
winget install ffmpeg or download from ffmpeg.orgscoop install chafaOr build from source:
git clone https://github.com/emin-ozata/lazycut.git
cd lazycut
go build
./lazycut video.mp4
lazycut <video-file>
| Key | Action |
|---|---|
Space |
Play/Pause |
h / l |
Seek ±1s |
H / L |
Seek ±5s |
i / o |
Set in/out points |
Enter |
Export |
? |
Help |
q |
Quit |
Repeat counts work: 5l = seek forward 5 seconds.
It looks like this app is shelling out to ffmpeg to get the bitmap of a frame and then shelling to something called chafa to covert to nice terminal-friendly video.
(There's Kitty Graphics too, but I couldn't figure out how to make terminal UI layout work with it.)
I just think there are other closely related use cases where a separate program can add more value, especially in the terminal. I wouldn't suggest most people should use ffmpeg instead of a gui, those are too dissimilar. Another example is cutting out a part of a video, with ffmpeg you need to make two temporary videos and then concatenate them, that process would greatly benefit from a better ux.
It can be done in a single command, no temp files needed.