[分享创造] 忍受不了官方 NAS 客户端的卡顿,我用 Flutter 手搓了一个“零缓冲”的 SMB 播放器和漫画直读工具

4 月 12 日
 killersaca2026
大家好,我是个重度 NAS 玩家( Datahoarder )。

一直以来,我都在忍受各大官方 NAS APP (比如 DS Video )的折磨:索引慢得令人发指,播放高码率 MKV/TS 文件时缓冲转圈让人崩溃。而且想要看 ZIP/CBZ 格式的漫画,还得先下载解压,简直反人类。

iOS 上虽然有 Infuse 这样优秀的应用,但 Android 和 Fire TV 上却很难找到一个能让我满意的“即点即播”的纯粹播放器。于是,我决定自己造个轮子:Nas Player Pro 。

这里分享一下我填坑的两个技术点,以及被 AI 折磨的经历:

1. 解决 SMB 视频流的卡顿(本地代理方案)
直接把 smb:// 丢给播放器,拖拽进度条时卡顿非常严重。我的解决方案是:在本地起一个轻量级 HTTP 代理。播放器向本地代理请求视频流( Range Request ),代理再将其转化为 SMB 请求去精准拉取 NAS 上的对应字节。加了这一层后,几十 GB 的视频在局域网内实现了真正的“零缓冲”秒播和秒拖拽。

2. 不解压直接通过网络阅读 ZIP/RAR 漫画(二进制解析)
为了实现秒开漫画,我死磕了 ZIP 和 RAR 的二进制规范。
利用 SMB 的随机访问特性,只读取文件末尾的“中心目录( End of central directory )”,解析出每张图片的 Offset (偏移量)和大小。当滑动到下一页时,直接通过 SMB 按需提取那几十 KB 的字节并在内存中解码。完全不需要下载整个压缩包。

3. 被 AI 辅助编程( Vibecoding )折磨的日常
在开发过程中我大量使用了 AI ,但现实并非一键生成代码那么美好。AI 就像一个记忆力只有 7 秒的疯狂实习生,在帮我修复 UI Bug 的同时,会擅自“重构”并删掉我好不容易写好的二进制解析逻辑(幻觉严重)。由于当时还没习惯用 Git ,我只能靠疯狂复制备份文件夹来和它进行“肉搏战”。

虽然过程充满血泪,但这个无广告、不扫描索引、纯粹追求速度的工具终于上架了(支持 iOS / Android / Fire TV )。

如果这里也有被 NAS 播放痛点折磨的折腾党,欢迎来试试我的心血之作,也非常期待大家的硬核技术反馈!

官网介绍与各平台下载链接(支持英文):
https://killersaca.github.io/Privacy-Policy/NasPlayerPro.html#en
1602 次点击
所在节点    推广
2 条回复
Hansah
4 月 12 日
7 刀?
nidhogger
4 月 12 日
op 能否发个码体验?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1205269

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX