A native Windows C++ application that compresses any video to a target file size using FFmpeg
The end goal for this project is to act as a native desktop application replacement for this compression website I have used https://www.freeconvert.com/video-compressor This way we can take advantage of the precious hardware each one of us has!
- The program depends on ffmpeg and ffprobe.
TODO: redistribute the binaries with a release build, or offer both with and without?
Version used: 8.1
The easiest way to get FFmpeg on Windows: from the git master or release builds section of https://www.gyan.dev/ffmpeg/builds/ Download a full_build of any kind, such as ffmpeg-2026-04-26-git-4867d251ad-full_build.7z. Make a folder inside named "ffmpeg" inside "vendor". Then copy all the contents of the downloaded zip "bin" folder (10 items) to "vendor/ffmpeg"
Version used: 1.92.7-docking
- Download from: https://github.com/ocornut/imgui/tags and drop into "vendor/imgui". Make sure the folder names are correct, so remove the version
Visual Studio installed
Run x64 Native Tools Command Prompt for VS (version optional)
build.bat
Doctest, version used 2.5.2. Included in the repo already
- If the requested size is too small for the video's length (would force video bitrate < 50 kbps), the tool aborts rather than produce garbage
- Audio is re-encoded to AAC at 128 kbps (scaled to 64/32 kbps for very small targets)
- Output container is deduced from the input file path. The app appends _compressed to the input file name