标签:# Kotlin

从 SAF 零拷贝串流到 Vulkan 分块推理:ZenConverter 纯本地多模态转换引擎工程剖析

在移动操作系统上处理文件格式转换,长期以来是用户体验与隐私安全的“重灾区”。打开主流应用商店搜索“格式转换”,迎面而来的是充斥着插屏广告、按周扣费订阅制,以及强制将用户本地文档和私密视频上传至远程服务器解析的云端中转工具。

对于个人敏感合同、未公开设计图纸或大体积 4K 原盘视频,这种云端中继模式不仅存在巨大的隐私泄露风险,受制于移动网络带宽,更经常因网络中断导致转换彻底失败。

开源项目 ZenConverter(基于 AGPL-3.0 协议开源)给出了一种彻底去中心化、端侧优先的工程解法:全生命周期 100% 运行于 Android 手机本地,不设任何云端回退(No upload-based fallback),没有第三方广告与强制账号体系,仅在用户按需下载 AI 模型与 CJK 字体时按需申请网络权限

在这套极具克制的设计背后,ZenConverter 在工程层面上攻克了 Android 平台上一系列严苛的底层挑战——从 Storage Access Framework(SAF)的大文件零拷贝串流,到利用 Rust 交叉编译原生解析 Office 文档;从 Google WOFF2 的 Android 15 16KB 内存页对齐,再到利用腾讯 NCNN + Vulkan GPU 算力实现 Real-ESRGAN 超分与 RIFE 视频插帧的内存分块守护。

本文将从架构设计、文件 I/O 管线、多引擎分发调度、AI 端侧推理及工程避坑等维度,深度拆解这款纯本地转换器的工业级实现细节。