从开发到上架:我为什么要在鸿蒙上写一款NAS播放器
花了一个月,给自己搓了个「纯血鸿蒙」的NAS媒体工具,顺便把相册备份也安排了
一、先说说为什么有这个东西
先交代一下背景:我是NAS老用户了,一路从HP Gen10 自建 NextCloud 到威联通 TS-212,再到群晖 DS118、威联通 TS-532X,现在主力是群晖 DS223。手机里存了大量照片和视频,NAS 对我来说就是数字生活的「基础设施」。
去年换了鸿蒙手机之后,问题来了——群晖官方App在鸿蒙上的体验一言难尽。倒不是说不能用,但总觉得像是个移植品,界面比例怪怪的,操作起来也不够跟手。更关键的是,鸿蒙的分布式能力和这些App完全没结合,有种「拿着新手机跑旧系统」的割裂感。
上论坛逛了一圈,发现不是我一个人这么觉得。鸿蒙的NAS工具生态确实比较薄,尤其是纯原生的、针对鸿蒙特性设计的工具,基本没有。
与其等着厂商适配,不如自己写一个。
于是就有了 ReelNAS——一个纯血鸿蒙的原生应用,包名 com.ron.reelnas,基于Stage模型 + MVVM架构,目标是覆盖NAS日常使用中最核心的几个场景:浏览文件、看图片、播视频、相册备份。
多说一句:这个应用完全开源、免费、无广告。源码在 Gitee 上,你可以随时查看、修改、提意见。
开发过程中也充分体验了AI编程的能力——从技术方案的设计讨论、鸿蒙API的用法咨询、代码质量检查到这篇文案的打磨,AI贯穿了各个环节。在鸿蒙生态文档和社区资源还不够丰富的阶段,AI辅助确实大幅缩短了从想法到上架的周期。
二、它到底能干什么
先别急着关页面,我直接把它能做的事情摆出来,你看有没有你需要的。
1. 远程文件浏览——三列网格,清爽直观
一进应用就是文件浏览界面,远程服务器上的文件和目录以三列网格展示,每个文件都有对应的图标区分(文件夹、图片、视频、普通文件)。

操作逻辑很简单:点击目录进入下一级,点击图片看图,点击视频播视频。顶部有 .. 按钮返回上级,跟电脑上的文件管理器一样直觉。
值得一说的是缩略图。图片和视频都会自动生成缩略图,但只有在滚动到可见区域时才会触发加载,不会一进目录就把所有文件都下载一遍。缩略图生成后缓存到本地,上限500MB,下次再浏览直接读取缓存,不需要重新请求服务器。
视频缩略图是从视频的第一帧提取的,不需要下载完整视频——这对NAS用户来说太重要了,几百MB的视频文件不可能为了一个预览图就全量下载。
2. 图片查看——滑动浏览,手势缩放
点击任意图片进入全屏查看模式,这个页面我花了不少心思。
核心操作:
左右滑动切换上一张/下一张图片
双击放大到2.5倍,再次双击恢复原大小
双指捏合自由缩放(1倍到5倍)
双指拖动在放大状态下平移视野
底部显示当前页码、图片分辨率和文件大小

后台做了几件事来保证流畅度:
只预先加载当前、上一张、下一张共三张图片到内存,翻页后及时释放远处的图片
图片解码限制最大边长为4096像素,防止超高分辨率图片撑爆内存
缩放和双指平移都是通过手势组件实现的,双击有平滑缩放动画,手感比较接近系统相册
3. 视频播放——这才是重头戏
视频播放是我自己最常用的功能。NAS上存了大量视频,以前在手机上播NAS里的视频要么下载到本地,要么用第三方播放器通过SMB连接。
ReelNAS的做法是直接通过WebDAV流式播放——视频不下载到本地,播放器直接从服务器读取数据流,边缓冲边播, 还可以支持横竖屏切换。

具体功能:
播放/暂停点击画面或控制栏按钮
进度拖拽底部滑块控制
快进快退双击左侧快退10秒,双击右侧快进10秒,有文字提示
上/下一个视频当前目录有多个视频时,控制栏会出现切歌按钮
全屏隐藏系统状态栏和导航栏,铺满屏幕
控制栏3秒自动隐藏,点击画面重新显示
画面适配方面:
视频保持原始宽高比,自动居中,两边黑边由黑色背景填充
宽屏视频自动切横屏,竖屏视频保持竖屏
切换视频时画面尺寸不会出现瞬间拉伸——上一视频的比例一直保持到下一视频的画面信息加载完毕
说一个开发过程中踩过的坑。系统播放器的状态流转是这样的:设置播放地址(URL)→ 状态变为「已初始化」→ 在「已初始化」状态下设置显示画面和启动准备 → 状态变为「已就绪」→ 开始播放。一开始我没注意顺序,在设置URL之后马上设置显示画面,结果系统报错「只能在已初始化状态下设置画面」。后来改成在回调函数里等状态变为「已初始化」后再执行后续操作,问题解决。这种底层细节虽然用户看不见,但确实影响稳定性。
4. 相册备份——全量 or 增量,随你选
这个功能比较直接:把你手机里选中的相册的照片和视频,备份到自己的WebDAV服务器上。
两种同步模式:
全量同步:不管之前有没有备份过,扫描所有文件上传
增量同步:只上传上次同步之后新增或修改的文件
服务器上需要先设置webdav
在群晖服务器上设置webdav
在手机上设置群晖服务器地址备份过程中的体验:
界面实时显示已上传数量和进度条
文件列表逐条显示上传状态:等待中→上传中→已完成→失败
上传过程中屏幕保持常亮,不会因为熄屏中断
可以随时停止
后台做的一些优化:
最多3个文件同时上传,均衡利用带宽又不卡界面
上传前会检查远程是否存在同名且大小相同的文件,自动跳过,避免重复
成功上传一个文件就记录时间点,下次增量同步以此为截止点
支持取消操作,取消后不会残留无效的上传会话
远程的文件组织方式:
{远程路径}/{设备型号}/{年份}/{月份}/{文件名}
按设备+年月归档,方便后续查找和管理。

三、说实话,它不是什么都能做
写到这里,我觉得有必要诚实地说明几个目前还不够完美的地方。
1. 只支持WebDAV协议 目前只做了WebDAV,SMB、NFS这些协议还没支持。选择WebDAV作为首发协议是因为它配置简单、穿透性好,大部分NAS都能开。但如果你习惯用SMB连接NAS,现阶段确实用不了。
2. 目前仅在群晖上完整验证 由于我自己的NAS是群晖DS220+,所以整个开发测试都是基于群晖环境完成的。QNAP、NextCloud、fnOS等其他支持WebDAV的服务器理论上可以正常工作,但在这些平台上的实际兼容性还有待验证。后续会根据用户反馈逐步补充对其他品牌的适配和测试。
3. 视频解码依赖系统播放器 ReelNAS本身不做视频解码,用的是鸿蒙系统的AVPlayer。这意味着系统支持什么格式它就播什么格式,不支持的就播不了。目前主流格式(MP4、MOV、MKV)都没问题,但一些冷门编码可能不行。
4. 暂无电视端 目前只适配了手机,没有做鸿蒙平板和智慧屏的适配。用平板大屏看NAS视频的体验其实很好,后续有计划做。
5. 需要一定的网络知识 虽然应用做了很多简化(比如URL自动补全 https:// 前缀),但配置WebDAV本身还是需要一点网络基础知识的——至少要知道自己的NAS IP地址、知道怎么开启WebDAV服务。完全的小白用户可能需要参考一下教程。
四、和官方方案比怎么样
为了让你更直观地判断,我列了个简单的对比表:
对比项 群晖官方App ReelNAS 鸿蒙原生 ❌ 兼容模式运行 ✅ 纯血鸿蒙,Stage模型 视频流播放 ✅ 支持 ✅ 支持 视频播放界面 一般 控制栏、双击快进、宽高比自适应 图片浏览 ✅ 支持 ✅ 支持手势缩放+滑动 相册备份 ✅ DS Photo ✅ 全量/增量可选 备份去重 ✅ 有 ✅ 有 支持多NAS品牌 ❌ 仅群晖 🟡 理论支持,群晖已验证 密码加密存储 ✅ ✅ AES-128-CBC 深色模式 ✅ ✅ 跟随系统 价格 需要购买NAS+授权 完全免费、开源、无广告
群晖官方App在功能全面性上肯定是胜出的,毕竟做了那么多年。但如果你是鸿蒙用户,ReelNAS在原生适配和操作流畅度上反而更有优势——它不是把iOS/Android版简单移植过来,而是从零开始按照鸿蒙的开发规范写的。
另一个差异是跨品牌兼容。如果你用的是QNAP、fnOS、NextCloud或者其他支持WebDAV的NAS,群晖官方App是用不了的,而ReelNAS可以(目前群晖上验证通过,其他品牌待用户反馈逐步验证)。
当然,最根本的区别是——ReelNAS完全开源免费,没有任何广告和内购。一个自己用的工具,没有必要塞广告。
五、适合哪些人
用了一段时间之后,我觉得这几类用户最适合尝试:
NAS老手,想试试鸿蒙新工具 你已经熟悉NAS的各种玩法,配置WebDAV对你来说没什么门槛。这个App可以作为你的文件浏览和视频播放的补充工具。
用了鸿蒙手机,但NAS不想换 你有NAS设备,但鸿蒙手机上找不到好用的客户端工具。ReelNAS可以覆盖日常最常用的几个场景。
相册需要增量备份 你希望手机照片定期自动备份到自己的服务器上,不想经过第三方云。增量同步加上去重机制,基本可以满足「设好之后不用管」的需求。
六、写在最后
写这个App的初衷其实很简单——自己需要一个趁手的工具,市面上没有现成的,那就自己动手。
从搭框架到功能实现,从测试到上架,前后花了一个多月。这个过程里踩了不少坑,也学到不少东西。鸿蒙的开发体系还在快速演进中,文档和社区资源不如Android/ iOS丰富,遇到问题时很多时候要靠翻API文档和反复试错来排查——但也正是这个过程,让我对这个平台的特性有了更深的了解。
目前ReelNAS的版本是1.1.0,后续三个重点方向:
方向一:支持更多品牌的NAS 目前仅在群晖上完整验证,接下来会根据用户反馈逐一覆盖 QNAP、fnOS、NextCloud、华硕等主流 NAS 的 WebDAV 兼容性测试,让更多用户到手即用。
方向二:自研 FFmpeg 解码引擎,支持全能视频格式 当前依赖系统播放器,遇到 DTS、TrueHD、ASS 特效字幕这些「硬骨头」格式就束手无策了。计划通过 NAPI 集成 FFmpeg,在应用层实现软解,真正做到「只要是视频就能播」。
方向三:字幕与音轨切换 配合 FFmpeg 引擎,后续将支持多音轨选择、外挂/内嵌字幕加载、ASS 特效字幕渲染,让 NAS 里的高清电影在手机上也能获得接近播放器的体验。
此外还有平板/折叠屏适配、后台自动备份等基础优化也在排期中。
如果你有什么想法或建议,欢迎在评论区留言——下一版更新什么功能,很大程度上取决于真实用户的需求。毕竟,这个App从一开始就是为「自己用」而写的,大家的反馈会让它变得更好用。
如何获取
方式 说明 鸿蒙应用市场 搜索 ReelNAS,直接安装 Gitee 源码 👉 https://gitee.com/sirix/rnas_oh
再次强调:完全开源、免费、无广告。源码公开透明,不收集任何隐私数据,不会在通知栏推送广告,没有付费功能墙。
欢迎 star、提 issue、参与讨论。开源的意义就在于——你觉得哪里不好用,可以直接改,也可以告诉我我来改。
本文作者为应用开发者,文章内容基于真实开发和使用体验。文中提及的功能和使用感受均为个人观点,仅供参考。
作者提示含AI生成内容。作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

wxp55598
校验提示文案
wxp55598
校验提示文案