Skip to content

Strawberry-Foundations/bitshrinker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BitShrinker

BitShrinker is a desktop GUI app for compressing videos and images to a target file size. It is built with Rust + Iced and uses FFmpeg/FFprobe under the hood.

Features

  • Compress videos to a target size (in MB)
  • Compress images to a target size (in MB)
  • Video options:
    • Target FPS
    • Video dimensions (e.g. 1280x720)
    • Audio compression toggle
    • Audio bitrate control (kbps)
    • Preserve metadata toggle
    • Fast mode toggle
  • Image options:
    • Dimension scaling
    • Compression mode:
      • Balanced (smaller output, may lose quality)
      • Lossless (quality-preserving where supported)
  • Automatic metadata prefill after selecting a video:
    • FPS field
    • Video dimensions field
    • Audio bitrate field

Supported Formats

Video

  • mp4, mov, mkv, webm, avi, m4v

Image

  • png, jpg, jpeg, webp, gif, bmp, tif, tiff

Requirements

  • Rust toolchain (recommended via rustup)
  • FFmpeg in PATH
  • FFprobe in PATH

Check your installation:

ffmpeg -version
ffprobe -version
rustc --version
cargo --version

Build

cargo build

For a release build:

cargo build --release

Run

cargo run

How to Use

  1. Select an input file (video or image).
  2. Choose an output path.
  3. Enter the target size in MB.
  4. Configure video/image options as needed.
  5. Start compression.

Notes

  • FPS applies to video input only.
  • Image and video options are shown depending on the selected input type.
  • If FFmpeg/FFprobe is missing or returns an error, the app shows a status message in the UI.

Project Structure

src/
	main.rs          # App logic, UI, FFmpeg/FFprobe integration
	application.rs   # App state and window/settings defaults
	fonts.rs         # Font loading helpers
assets/
	fonts/
	image/

Tech Stack

  • Rust (Edition 2024)
  • Iced (GUI)
  • RFD (native file dialogs)
  • FFmpeg/FFprobe (media processing)

Troubleshooting

FFmpeg not found

Install FFmpeg and ensure both ffmpeg and ffprobe are available in your PATH.

Compression fails with codec/container errors

Try a different output extension/container that matches your source or codec support in your local FFmpeg build.

Target size not reached exactly

BitShrinker aims for the requested size, but exact results can vary depending on media complexity and codec constraints.

About

Desktop GUI app for compressing videos and images to a target file size

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages