MediaForge is a focused macOS desktop application for probing, previewing, trimming, and converting one media file at a time. Rust calls FFmpeg libraries directly, while Flutter owns the desktop presentation and native preview.
Requirements:
- Apple Silicon Mac running macOS 13 or later
- Rust 1.88.0 with
rustfmtandclippy - Flutter 3.47.0 with Dart 3.13.0
flutter_rust_bridge_codegen2.12.0- Clang,
make,pkg-config,curl,tar, and Xcode command-line tools
Initialize the pinned FFmpeg source after cloning:
git submodule update --init third_parties/FFmpegBuild the repository media dependencies and run the desktop application:
bash scripts/build-media-deps-macos.sh
cd app
flutter pub get --enforce-lockfile
flutter run -d macosRun the complete source, integration, and release-package verification suite:
bash scripts/verify.shThe ignored FFmpeg integration test creates synthetic fixtures with a
developer-only ffmpeg CLI, then exercises the application's direct library
backend:
cargo test -p mediaforge-ffmpeg --test transcode -- --ignoredBuild FFmpeg 9.0.1 from the pinned submodule and install the LGPL shared
libraries into ignored repository-local output under
vendor/ffmpeg/macos-arm64:
bash scripts/build-media-deps-macos.shThe dependency script refuses a missing, dirty, or incorrectly tagged FFmpeg
checkout. It separately verifies the LAME 3.100 source archive checksum,
disables GPL and nonfree FFmpeg components and CLI programs, enables
VideoToolbox and native AAC, and links LAME for MP3. Stable bundled library
names and @rpath install names keep build-machine and FFmpeg ABI paths out of
the application bundle.
Create unsigned Apple Silicon app and DMG artifacts and verify their linkage:
bash scripts/bundle-flutter-macos.sh
bash scripts/verify-flutter-macos-bundle.shThe artifacts are written to
target/release/bundle/macos/MediaForge.app and
target/release/bundle/dmg/MediaForge_0.2.0_aarch64.dmg.
See Third-party notices and macOS distribution for licensing, clean-machine verification, signing, and notarization guidance.