Android "audio-from-video-url" extraction app.
Don't want to build it yourself? Grab the latest APK from tunedroid-releases.
- Extract audio from video URLs
- Multiple format presets (MP3 128/256/320 kbps, or original format)
- Material You design with dark mode support
- No ads, no tracking, no analytics
- Open source and transparent
- Min SDK: 26 (Android 8.0)
- Target SDK: 35 (Android 15)
- Language: Kotlin 2.1.0
- UI Framework: Jetpack Compose
- Audio Extraction: (junkfood02 fork) + FFmpeg
- Database: Room 2.6.1
- Navigation: Jetpack Navigation Compose
(junkfood02 fork) + FFmpeg
- Room, WorkManager, Coil, DataStore
- Android Studio Ladybug or later (2024.2.1+)
- JDK 21 (bundled with Android Studio recommended)
- Android SDK 35
Set the following environment variables:
macOS/Linux:
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
export ANDROID_HOME="$HOME/Library/Android/sdk"Windows:
set JAVA_HOME=C:\Program Files\Android\Android Studio\jbr
set ANDROID_HOME=%LOCALAPPDATA%\Android\sdkDebug APK:
./gradlew assembleDebugRelease APK (unsigned):
./gradlew assembleReleaseOutput: app/build/outputs/apk/debug/app-debug.apk (or /release/)
-
Clone the repository:
git clone https://github.com/llmspace/tunedroid.git cd tunedroid -
Open in Android Studio:
File > Open > Select tunedroid directory -
Wait for Gradle sync to complete
-
Build APK:
Build > Build Bundle(s) / APK(s) > Build APK(s) -
Install on device:
Run > Run 'app'
- Debug: ~136 MB (includes Python runtime + FFmpeg native libraries)
- Release (with ProGuard): ~120-130 MB
app/src/main/java/com/tunedroid/app/
├── engine/ # Core audio extraction logic
│ ├── MediaUrlParser.kt
│ ├── MetadataFetcher.kt
│ ├── StreamSelector.kt
│ ├── AudioDownloader.kt
│ ├── AudioConverter.kt
│ ├── EngineUpdater.kt
│ ├── FormatPreset.kt
│ └── FileNameGenerator.kt
├── data/
│ ├── database/ # Room database (downloads history)
│ ├── repository/ # Data access layer
│ └── PreferencesManager.kt
├── service/ # DownloadService (foreground service)
├── ui/
│ ├── screens/ # Compose UI screens
│ └── theme/ # Material Design theme
├── updater/ # App update checker (GitHub Releases API)
├── MainActivity.kt
└── TuneDroidApp.kt # Application class
- Kotlin official style guide
- 4-space indentation
- Material Design principles
- Library Imports:
com.yausername.*imports are necessary despite containing platform terms - this is NOT a branding violation - BuildConfig:
buildConfig = truemust be set inbuildFeaturesfor version checking to work
- Local suspend functions inside
@Composablecan cause "Unresolved reference" — extract to file-level private functions - Use
dependencyResolutionManagementnotdependencyResolutioninsettings.gradle.kts
GPL-3.0 - See LICENSE file for details
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Fork it and do whatever.
This app is for educational purposes. Users are responsible for complying with the terms of service of any websites they use with this app.
