Files
otto 16acb43daf Add fit-to-size two-pass encoding, file argument, recipes, and batch mode
- Fit to size: computes H.264 bitrate from duration and runs a
  two-pass encode to land on a target size in MB
- lazyff FILE opens straight in the editor
- Recipes: save/load named edit stacks (~/.config/lazyff/recipes.json)
- Batch: mark files with Space, run one edit stack across all of them
  through a sequential job queue with per-file results
2026-06-11 11:55:55 +01:00

73 lines
2.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# lazyff
<img src="https://i.ibb.co/HfjdZJ03/image.png" alt="Screenshot" width="30%" />
A friendly terminal UI for FFmpeg. Trim, resize, crop, compress, convert and
apply effects to video and audio — without memorizing a single flag.
lazyff always shows the exact `ffmpeg` command it is about to run, so you can
learn FFmpeg as you use it (and copy-paste the command anywhere).
## Requirements
- `ffmpeg` and `ffprobe` on your PATH
- A terminal
## Install / run
```sh
cargo run --release
# or
cargo install --path .
lazyff # browse the current directory
lazyff video.mp4 # open a file straight in the editor
```
lazyff opens a file browser in the current directory. Pick a video or audio
file, then stack up edits and press `r`. Mark several files with `Space` to
edit them all at once (batch mode).
## What it can do
| Edit | Examples |
| --------------- | ----------------------------------------------------- |
| Trim / Cut | keep 0:30 → 1:45, instant lossless stream copy |
| Resize | 1080p/720p/480p presets, half size, custom |
| Crop | centered square / 16:9 / 9:16 / 4:3, custom rectangle |
| Rotate / Flip | 90°, 180°, mirror |
| Speed | 0.25x 4x, audio pitch preserved |
| Color adjust | brightness, contrast, saturation |
| Visual effects | grayscale, sepia, blur, sharpen, vignette, denoise, fades |
| Frame rate | 12 60 fps |
| Compress | H.264/H.265 with plain-English quality presets |
| Fit to size | "make it 25 MB" — two-pass encode to a target size |
| Convert format | MP4, MKV, WebM, MOV, GIF (with palette pass), MP3, M4A, WAV |
| Audio | remove track, volume, loudness normalization |
Edits combine: add a trim, a resize and a compress, and lazyff builds one
ffmpeg command that does all three in a single pass.
Audio files (MP3, FLAC, WAV, ...) only offer the edits that make sense for
them — trim, speed, volume/fades, and conversion between audio formats
(MP3, M4A, FLAC, WAV, OGG).
## Keys
**File browser**`↑↓` move, `Enter` open, `Backspace` parent folder, `q` quit
**Editor**`a` add edit, `Enter` change, `d` delete, `J`/`K` reorder,
`s` save recipe, `l` load recipe, `o` output name, `r` run, `Esc` back to
files, `q` quit
**Recipes** save your current stack of edits under a name
(`~/.config/lazyff/recipes.json`) so you can re-apply it to any file or
batch with two keys.
**Forms**`↑↓` field, `←→` change choice, type into text fields,
`Enter` save, `Esc` cancel
While encoding you get a progress bar with speed readout; `Esc` cancels and
removes the partial output. Output files are written next to the input as
`<name>_lazyff.<ext>` (rename with `o`); lazyff refuses to overwrite the
input file.