# ZenConverter

English | 中文

最新版本 Platform Kotlin Jetpack Compose No ads License

ZenConverter app icon

ZenConverter 是一个 Android 本地文件转换器。选择手机里的文件,在手机上完成转换,不把文件上传到别人的服务器。 项目使用原生 Kotlin 和 Jetpack Compose。文件访问走 Android Storage Access Framework,耗时任务在前台服务中运行。项目不会假装自己是万能转换器:已支持路线均已在 Android 真机验证,限制也会直接写清楚。 **注意:** 超大媒体文件需要足够的可用存储、内存和电量。长时间前台转换期间请保持设备可用。如出现闪退等情况欢迎及时反馈。 ## 为什么做它 桌面端已经有很多优秀的开源转换工具,但 Android 端体验仍然粗糙。很多转换类 App 广告多、收费混乱、界面臃肿,或者默认要求把文件上传到云端。 ZenConverter 想做的是一个本地优先的 Android 转换器: - 转换过程不需要网络传输, - 没有广告、账号、付费墙或远程上传, - 仅申请 `INTERNET` 权限用于手动检查应用更新, - 不申请不必要的权限, - 大视频被当作真实使用场景处理,即使这条路仍然需要继续打磨, - 支持范围公开写在 [support matrix](formats/support-matrix.md) 中。 ## 当前状态 `稳定` 路线已在 Android 真机验证;`Beta` 路线可用,但仍受明确写出的兼容性边界约束;计划中的功能放在最后。 | 模块 | 状态 | 说明 | | --- | --- | --- | | 原生 Android 外壳 | 已完成 | Kotlin、Compose、Material 3、前台服务任务管线。 | | 任务队列与结果 | 已完成 | 系统分享/打开方式导入、混合文件独立路由、逐文件目标设置、文件基础信息、逐任务进度和失败状态、转换前后摘要、取消、输出分享,以及尽力打开输出文件或所在位置。 | | 视频转换 | 已完成 | MP4 / MKV / MOV 输出均走 FFmpeg 视频与音频真重新编码,包含 MP4 转 MP4,可调整编码、码率、分辨率、帧率、音频和高级处理。开启压缩预设会固定 CRF、视频质量/体积策略及 AAC 音频码率。 | | 视频转动图 GIF | 已完成 | 使用 FFmpeg 调色板路线,自动取前 30 秒,最多 30 fps、900 帧;默认短边 480 px,可选 720 px 或原始尺寸。 | | 音频提取与互转 | 已完成 | 视频音频提取和 MP3 / M4A / WAV / FLAC / WMA 目标均走 FFmpeg 真重新编码;已接入适用的码率、采样率、声道和编码器检查。 | | 音视频高级处理 | 稳定 | 视频支持短视频倒放、淡入淡出、镜像、旋转和画幅适配/裁剪;音频支持倒放、无模型 `afftdn` 降噪、淡入淡出、音量/静音和回音。倒放有保守的安全限制。 | | 图片转换 | 稳定 / Beta | 支持 JPG / JPEG / JFIF / JPE、PNG、WEBP、GIF、HEIC / HEIF、ICO 输入,以及 JPG / JFIF / PNG / WEBP / ICO / PDF 输出。HEIC / HEIF 仍受设备解码器能力影响。GIF 可转首帧或拆帧到文件夹;不复制元数据和动画时序。 | | 元数据安全 | 稳定 | 独立隐私工具可查看图片/视频元数据。JPG / JPEG / JFIF 可不重编码原地清理,被移除的元数据会备份到应用数据目录,支持同一张图恢复。 | | PDF 工具 | 稳定 | 图片/PDF 互转、PDF 合并、可选择文本导出 TXT / 轻量 MD,以及基于密码的 PDF 加密和解密。不包含 OCR 或密码破解。 | | Office 转换 | Beta | DOCX / PPTX / XLSX 可在本地输出 PDF、TXT 或轻量 MD。中文可用内置 CJK 字体渲染,但版式保真有限,源文件上限为 64 MiB。 | | ZIP 压缩包处理 | 计划中 | 待流式处理和压缩包安全边界设计完成后再接入。 | ## 架构 ```mermaid flowchart LR Pick["添加文件"] Configure["逐项设置任务"] Queue["待开始队列"] Service["前台服务"] Engine["FFmpeg / Native / Office"] Output["保存输出"] Pick --> Configure --> Queue --> Service --> Engine --> Output ``` UI 不直接做转换。每个任务会根据输入、输出和所选模式选择引擎: - `Compatibility`:已接入音视频目标、GIF 输出和高级处理均走 FFmpeg 真重新编码路线。 - `Native`:用 Android 平台 API 处理图片、PDF 等不需要媒体引擎的任务。 - `Office`:用本地初版 Office 渲染路线处理 DOCX、PPTX 和 XLSX。 - `SafeCache`:后续用于处理无法提供可用文件描述符的文件来源。 更多细节见 [docs/architecture.md](docs/architecture.md) 和 [docs/technical-route.md](docs/technical-route.md)。 开发环境说明见 [docs/development-setup.md](docs/development-setup.md)。 ## 许可证 ZenConverter 自有源码基于 [GNU Affero General Public License v3.0 or later](LICENSE) 发布。 第三方库、原生二进制文件和内置字体仍保留各自许可证。详细记录见 [docs/license-and-attribution.md](docs/license-and-attribution.md) 和 [third_party/THANKS.md](third_party/THANKS.md)。 ## 鸣谢 - [OhMyGPT](https://www.ohmygpt.com/) 提供 AI API 支持。 - [**ForZTN**](https://sponsorship.forztn.com/github/Jasonzhu1207/ZenConverter) 提供内核编译服务器支持。 ## Star History Star History Chart