Handbrake-like FFMpeg wrapper to easily convert videos.
Find a file
Alexey Skobkin 365795b36f
All checks were successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/tag/ci Pipeline was successful
feat(ui): hide progress bar when no encoding is in progress (closes #16)
2026-06-20 01:47:10 +03:00
.woodpecker build(ci): improving CI configuration 2026-06-18 20:47:32 +03:00
cmd/yave build(resources): app icon introduced (closes #4) 2026-06-19 20:10:54 +03:00
internal feat(ui): hide progress bar when no encoding is in progress (closes #16) 2026-06-20 01:47:10 +03:00
.gitignore ci + feat(ui): Woodpecker pipeline, release pipeline, build version in window title (review fixes) (#9) 2026-06-18 17:22:16 +00:00
.golangci.yml ci + feat(ui): Woodpecker pipeline, release pipeline, build version in window title (review fixes) (#9) 2026-06-18 17:22:16 +00:00
.goreleaser.yml ci + feat(ui): Woodpecker pipeline, release pipeline, build version in window title (review fixes) (#9) 2026-06-18 17:22:16 +00:00
AGENTS.md docs: agentic docs updated on issue and branch working policy 2026-06-16 03:49:56 +03:00
go.mod build(resources): app icon introduced (closes #4) 2026-06-19 20:10:54 +03:00
go.sum feat: draft implementation 2026-06-14 19:30:43 +03:00
README.md build(resources): app icon introduced (closes #4) 2026-06-19 20:10:54 +03:00

YAVE status-badgelatest release

YAVE (Yet Another Video Encoder) is a focused desktop FFmpeg transcoding frontend written in Go and Fyne. It exposes a curated set of modern software and VAAPI encoders, reusable YAML profiles, safe output templates, transparent FFmpeg commands, progress reporting, logs, and cancellation.

Requirements

  • Go 1.26 or newer
  • FFmpeg and ffprobe available in PATH, or configured in the application
  • Linux desktop development libraries required by Fyne:
    • OpenGL development files
    • X11 development files
    • libgl1-mesa-dev and xorg-dev on Debian/Ubuntu
  • A usable VAAPI render device, normally /dev/dri/renderD128, for VAAPI profiles

Build and run

go build -o yave ./cmd/yave
./yave

An input file can be supplied as the first argument or dropped onto the application window:

./yave /path/to/video.mkv

Profiles and settings

Configuration is stored in the platform user configuration directory. On Linux the default path is:

~/.config/yave/config.yaml

The file is human-readable YAML and contains profiles, the startup default, and FFmpeg executable paths. Built-in profiles are installed when no profile configuration exists.

YAVE validates saved profiles against the encoders reported by the current FFmpeg build. Unavailable or incompatible settings remain editable, but conversion cannot start until validation errors are resolved.

Output templates

The default template is:

{dir}/{name}_{profile}.{ext}

Supported placeholders are {dir}, {name}, {ext}, {input_ext}, {datetime}, {date}, {time}, {profile}, {codec}, {width}, and {height}. Placeholder values are sanitized and templates containing unknown placeholders or path traversal are rejected.

Thanks

Special thanks to the people who helped shape YAVE.

App icon

Verification

go test ./...
go vet ./...
go build ./cmd/yave