A simple, efficient GUI application built in Rust for converting FLAC audio files to MP3 format at 320kbps while preserving metadata. Features batch processing and a clean, user-friendly interface.
- High-Quality Conversion: Converts FLAC to MP3 at 320kbps bitrate
- Metadata Preservation: Maintains all original metadata (artist, album, title, etc.)
- Batch Processing: Convert multiple files or entire folders at once
- Progress Tracking: Real-time progress updates during conversion
- Cross-Platform: Built for macOS (with potential for Linux/Windows)
- Clean GUI: Intuitive interface built with egui
This application requires FFmpeg to be installed on your system.
Fedora Linux:
# Enable RPM Fusion repositories (if not already enabled)
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
sudo dnf install https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
# Install FFmpeg
sudo dnf install ffmpegOther Linux distributions:
- Ubuntu/Debian:
sudo apt install ffmpeg - Arch Linux:
sudo pacman -S ffmpeg - openSUSE:
sudo zypper install ffmpeg
Verify installation:
ffmpeg -version- Rust 1.70+ (install from https://rustup.rs/)
- Development tools:
sudo dnf groupinstall "Development Tools" - System dependencies:
sudo dnf install pkg-config fontconfig-devel
- Clone the repository:
git clone <repository-url>
cd flac-to-mp3-converter- Build the application:
cargo build --release- Run the application:
cargo run --release- Make the build script executable:
chmod +x build_and_package.sh- Run the build script:
./build_and_package.shThis will create:
- A standalone binary at
target/release/flac-to-mp3-converter - An AppImage directory structure at
target/release/flac-to-mp3-converter.AppDir - A tarball at
target/release/flac-to-mp3-converter-1.0.0-linux-[arch].tar.gz - RPM spec file for building RPM packages
- Optional: Create AppImage (if you have appimagetool):
# Download appimagetool
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
chmod +x appimagetool-x86_64.AppImage
# Create AppImage
./appimagetool-x86_64.AppImage target/release/flac-to-mp3-converter.AppDir- Optional: Build RPM package:
# Copy source to rpmbuild directory
cp -r . rpmbuild/BUILD/flac-to-mp3-converter-1.0.0/
cd rpmbuild/BUILD/flac-to-mp3-converter-1.0.0/
tar -czf ../../SOURCES/flac-to-mp3-converter-1.0.0.tar.gz .
cd ../../..
# Build RPM
rpmbuild -ba rpmbuild/SPECS/flac-to-mp3-converter.spec- Launch the application
- Add FLAC files using one of these methods:
- Click "Add FLAC Files" to select individual files
- Click "Add Folder" to add all FLAC files from a directory
- Select output folder where converted MP3s will be saved
- Start conversion - the app will convert all files at 320kbps with metadata preserved
- Monitor progress through the progress bar and log messages
- Output Format: MP3
- Bitrate: 320kbps (constant bitrate)
- Metadata: ID3v2.3 tags preserved from source
- Quality: High-quality conversion using FFmpeg
eframe: Modern GUI frameworkrfd: Native file dialogsegui: Immediate mode GUI library
- Frontend: egui-based GUI with real-time updates
- Backend: Multi-threaded conversion using FFmpeg
- Communication: Channel-based messaging between GUI and conversion threads
For distribution, you may want to code sign the application:
- Get a Developer ID certificate from Apple
- Uncomment the code signing section in
build_and_package.sh - Update the signing identity to match your certificate
"FFmpeg not found" error:
- Ensure FFmpeg is installed and available in PATH
- Test with
ffmpeg -versionin terminal
Build errors:
- Ensure Rust is up to date:
rustup update - Install development tools:
sudo dnf groupinstall "Development Tools" - Install system dependencies:
sudo dnf install pkg-config fontconfig-devel
Permission errors:
- Make sure the build script is executable:
chmod +x build_and_package.sh
- Large batches: The application processes files sequentially to avoid overwhelming the system
- Disk space: Ensure adequate free space (MP3s are typically 10-15% the size of FLACs)
- Memory usage: Minimal memory footprint due to streaming conversion
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- Built with the excellent
eguiimmediate mode GUI framework - Uses FFmpeg for high-quality audio conversion
- Inspired by the need for a simple, efficient FLAC to MP3 converter