A native Android media transcoding application built with Kotlin and Jetpack Compose. It provides a Handbrake-like interface for granular control over media conversions on Android.
- Native Core: Built with Jetpack Compose and Material 3.
- Offline-Only: Runs entirely locally with no internet permissions requested.
- Android 15+ Ready: Uses 16KB page-size aligned FFmpeg binaries.
- Direct CLI Mode:
- Direct command editing in the interface after the
ffmpegprefix. - Placeholders (
inputandoutput) are dynamically mapped to local sandbox paths. - Custom command strings can be saved as reusable presets.
- Direct command editing in the interface after the
- Dry Runs: Execute standalone diagnostic or query commands (e.g. checking encoders or help output) directly without setting up input files.
- Multi-threading: Set active CPU core count to either regulate device thermals or speed up the encoding process.
- Terminal Logs: Diagnose issues with your ffmpeg command.
- SAF Pickers: Output target folders are configured using the Storage Access Framework, requiring no storage permissions.
- Powered by:
LTS Full GPLFFmpegKit binary.
- Android SDK, NDK, and JDK 17 installed.
- An arm64-v8a Android device with USB Debugging enabled.
Run the following command to compile and install the optimized release build on a connected device:
./gradlew installReleaseThe compiled APK will be located at:
app/build/outputs/apk/release/app-release.apk