V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
killersaca2026
V2EX  ›  分享创造

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

  •  
  •   killersaca2026 · 4 小时 57 分钟前 · 199 次点击
    大家好,我是个重度 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
    1 条回复    2026-04-12 19:31:51 +08:00
    Hansah
        1
    Hansah  
       43 分钟前
    7 刀?
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   3003 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 661ms · UTC 12:14 · PVG 20:14 · LAX 05:14 · JFK 08:14
    ♥ Do have faith in what you're doing.