Video Encoder (ffmpeg_encode) is a cross-platform desktop app: load HandBrake JSON presets, edit translated FFmpeg commands with placeholders, and let mkvinfo-backed rules choose English audio and Signs/Songs-style subtitles—then queue jobs with logs, ETA, and parallel or sequential modes.
| Source Path | Size | Tracks | Status | |
|---|---|---|---|---|
| ☑ | Shield Hero - S01E01.mkv | 489.12 MB | Not analyzed | Pending |
| ☑ | Shield Hero - S01E02.mkv | 506.68 MB | Not analyzed | Pending |
| ☑ | Shield Hero - S01E03.mkv | 512.04 MB | Not analyzed | Pending |
Install
Requires Python 3.8+, FFmpeg, HandBrake CLI, and MKVToolNix (mkvinfo). The app can auto-detect paths and offer installs via Chocolatey (Windows) or Homebrew (macOS)—see the repo README for Linux packages.
git clone https://github.com/Ryahn/ffmpeg_encode.git cd ffmpeg_encode pip install -r requirements.txt python src/main.py
Core features
Manage HandBrake presets, refine FFmpeg lines, and process folders with structure preserved—sequential or parallel encodes, skip-existing, dry run, and a live log with progress and ETA.
Load HandBrake JSON presets, keep a dropdown of recent presets with auto-save, and translate them into FFmpeg commands you can tweak. Last-used preset reloads on startup.
Save, load, and name custom command templates. Placeholders are replaced per job: input/output paths, resolved audio and subtitle track numbers, and extracted subtitle file paths when applicable.
For MKV files, mkvinfo supplies track language and names. Configure six groups in Settings: audio/subtitle language tags, comma-separated name regexes, and exclude regexes—plus Debug tab analysis when a file misbehaves.
Scan folders for common video types, preserve output folder layout, skip files that already have encodes, run parallel or sequential jobs, and watch encoding output in the built-in log viewer.
Workflow
Pick inputs and presets, confirm which tracks mkvinfo resolved under your Settings rules, then encode with HandBrake or FFmpeg—optionally after a dry run that prints the command without processing.
Use the Files tab to point at a folder of MKV, MP4, MOV, and other supported videos. Load a HandBrake preset JSON or build on a saved FFmpeg command template.
For MKV, the app reads track metadata with mkvinfo, applies your language tags and comma-separated name/exclude regexes separately for audio and subtitles, and picks the first qualifying tracks. Debug tab shows raw mkvinfo and why a track won or lost.
HandBrake CLI or FFmpeg runs with resolved paths and track indices injected into your command. Watch progress, ETA, and speed in the UI log; choose sequential or parallel queues and skip existing outputs when you want.
See it in action
Watch a complete batch-encode session — scanning files, loading tracks, and running FFmpeg from start to finish.
Pattern reference
Configure these in the app’s Settings tab as comma-separated lists. Language tags match mkvinfo language codes; name and exclude entries are regex. Try variants in the pattern playground above.
en, eng
English, ENG
Japanese, JPN, 日本語
Signs.*Songs, Signs.*Song, Signs$, English Signs, ^Signs\s*$
Community Metrics
Real-time stats from users running ffmpeg_encode.