| **中文 | English** |
一款轻量级 Android 视频转音频工具,支持快速提取并导出为 MP3 / M4A / WAV / FLAC / OGG 格式,无广告且完全免费

极简视频选择 — 原生支持 Android Photo Picker,无需额外申请读写权限,安全读取设备视频。
多格式灵活输出 — 支持 MP3、M4A、WAV、FLAC、OGG 五种音频格式,覆盖从高兼容到无损的全场景需求。
智能格式推荐 — 自动检测视频内嵌音频编码,智能选中最佳输出格式(如 AAC→M4A),优先直接复制实现秒级提取。
极速提取 — SAF 直读跳过文件拷贝、智能流复制避免不必要转码、多线程充分利用多核性能,18 分钟视频仅需数秒。
实时进度展示 — 环形进度条 + 百分比读数,实时呈现提取进度,支持随时取消。
内置播放预览 — 基于 Media3 ExoPlayer 的流畅试听体验,支持丝滑的进度拖拽。
文件管理 — 支持自定义重命名,自动保存至 /Music/AudioPeel,一键打开系统文件管理器查看。
快捷分享 — 基于 FileProvider 的安全文件共享,支持微信、QQ、Telegram 等主流应用。
极致包体 — R8 压缩混淆 + 资源压缩 + ABI 过滤,确保安装包体积最小化。
本项目遵循 Google 推荐的现代化架构实践,完全使用原生方案构建:
| 模块 | 技术选型 |
|---|---|
| 开发语言 | 100% Kotlin |
| UI 框架 | Jetpack Compose + Material Design 3 + Edge-to-Edge |
| 多媒体处理 | FFmpegKit (com.mrljdx:ffmpeg-kit-full) |
| 音频引擎 | AndroidX Media3 ExoPlayer |
| 媒体探测 | Android 原生 MediaExtractor + MediaMetadataRetriever |
| 架构模式 | MVVM + StateFlow 单向数据流 |
| 文件存储 | Scoped Storage + MediaStore API(兼容 Android 10+) |
| 包体优化 | R8 压缩 + 资源压缩 + ABI 过滤(arm64-v8a, x86_64) |
| Android Studio(推荐版本 Iguana | 2023.2.1 或更新) |
兼容性: 最低支持 Android 7.0(API 24),目标 SDK API 36。
git clone https://github.com/tianxing-ovo/AudioPeel.git
Run 'app' 或在 Terminal 执行 ./gradlew assembleDebug。在工程演进过程中,我们解决了多个 Android 碎片化开发中的典型难题,希望能为遇到同类问题的开发者提供思路:
SAF 直读优化 — 使用 FFmpegKitConfig.getSafParameterForRead() 直接从 content:// URI 读取视频,彻底消除文件复制到缓存目录的耗时步骤。同时为 FFprobe 和 FFmpeg 分配独立的 SAF 文件描述符,解决了 SAF id not found 问题。
智能流复制加速 — 通过原生 MediaExtractor 检测源音频编码,当编码与目标格式兼容时自动使用 -c:a copy 直接复制音频流,避免不必要的转码,实现秒级提取。
全版本媒体存储兼容 — 梳理了多代 Android 的路径保存机制:Android 10+ 采用 MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 安全写入;过渡版本通过 Documents Provider 锚定 Music 文件夹;老版本执行传统物理创建。
MD3 交互精调 — 重新设计了 Slider 和 ExoPlayer 控制器,攻克了 Jetpack Compose 中后台进度更新与用户拖拽冲突导致的弹回抖动问题,实现细腻的阻尼级交互体验。
包体瘦身 — R8 压缩混淆 + 资源压缩 + ABI 架构过滤,私有目录在每次提取前自动清理历史文件,防止应用数据无限膨胀。
本应用遵循最小权限原则,无需任何敏感权限:
| 权限 | 说明 |
|---|---|
| 无存储权限 | 使用 Android Photo Picker 选取视频,无需 READ_EXTERNAL_STORAGE |
| 无网络权限 | 所有处理均在本地完成,不上传任何数据 |
| 无后台权限 | 不申请后台运行或通知权限 |
欢迎提交 Issue 和 Pull Request!
git checkout -b feature/your-featuregit commit -m "feat: add your feature"git push origin feature/your-feature本项目基于 MIT License 协议开源。欢迎任何出于学习、分享和二次创作的使用。