
Vibe Coding for TV:开源了一个电视投屏接收器
TL;DR
一台 32 位的旧 Fire TV,一个晚上:系统精简出 1.9GB 存储,再从零写出一个 5MB 的开源投屏接收器,90 个单元测试和真机 E2E 全绿。
背景
几年前陆续买过两台外贸电视。所谓外贸电视,就是国内厂商给国外品牌代工的产品——我买的两台,一台是给 ONN 代工的;另一台就是今天要聊的这台 Amazon Fire TV,由 TCL 给 Amazon 代工,OEM 型号里的 SCBC_431PB-R 对应 43 寸 4K 面板。
配置放几年前还算能打:联发科 MT7632,四核 Cortex-A55,1.6GB 内存外加 400MB swap,支持 4K 和 HDR。系统是 Fire OS 7.7.1.7,基于 Android 9(SDK 28)。当年国产电视还满屏开机广告的时候,Fire OS 已经是 Amazon 自家的内容推荐,外加 Netflix、Disney+ 这些海外流媒体,观感干净不少。
不过臃肿也是真臃肿:系统里塞满了 Amazon 自家的推荐内容和海外流媒体。后来卖家给刷了一个精简固件,清爽了一些,但该有的系统应用一个没少。断断续续用了几年,我主要拿它看 YouTube,偶尔用极空间 App 连一下 NAS。整体体验不错,就是系统反应有点迟钝——毕竟 1.6GB 内存,日积月累谁都会胖。
第一步:给老电视「减负」
昨天突发奇想,打开开发者模式和 USB 调试,把电视交给了 DeepSeek Harness。
一通分析之后,它给出了诊断:可卸载的预装软件和系统组件一大把。第一轮清下来,存储从 3.8GB 占用降到 2.5GB;第二轮再清理卸载残留、广告缓存和系统应用缓存,最终占用停在 1.9GB——可用空间从 63% 涨到 81%,一共释放了 1.9GB。
顺手做的几件事:
- 禁用后台遥测(ACR 画面识别)、营销推荐和强制 OTA 升级
- 限制第三方应用退出后驻留后台,可用内存从 347MB 涨到 660MB
- 全局动画从 1.0x 调到 0.5x
一通处理之后,流畅度改善非常明显。找来儿子体验了一下,他的评价是:遥控器操作非常跟手,频繁开关 App 的速度也快了不少。
真正的痛点:投屏
这还没完,重头戏在后面。用过智能电视的朋友应该深有同感:投屏是个大问题。要么依赖视频平台自己的 App,要么装个独立的投屏接收软件。前者每个 App 都臃肿庞大;后者有广告、还动不动提示购买会员——App 的名字我就不提了,市面上也就那么一两个。
现在有了 AI 和 vibe coding,何不自己做一个?睡觉前,我把痛点和需求一股脑输出给了 DeepSeek Harness,想着它今晚可以完成编码和单元测试,我后面再安排时间做真机测试。
半夜起来上厕所,发现电视开着。我还以为睡前忘了关,走近一看,界面在动——原来是它自己通过局域网唤醒了电视(这台电视长期处于深度休眠状态),在做真机测试呢。
然后,就有了这个开源项目:
https://github.com/addozhang/leancast


LeanCast 能做什么
LeanCast 是一个跑在电视/盒子上的 DLNA/UPnP 投屏接收器。手机视频 App 里点右上角的 [TV],选中它就直接播放——没有广告、不用登录、全程只在局域网内通信。
- 标准协议:完整实现 UPnP AV MediaRenderer,B 站、腾讯、优酷、爱奇艺、央视频、夸克的投屏按钮通吃
- 硬件解码:基于 Media3/ExoPlayer,支持 HLS、MP4/MKV、FLV(尽力),4K 硬解
- TV 原生操控:进度条、暂停/播放提示、片名展示,长按快进还有阶梯加速——10 秒起步,按住不放逐步加到 5 分钟
- 中英文界面,一键切换
作为对比,同一台电视上的商业投屏 App:开机广告、投屏等待广告、清晰度要会员。LeanCast 这些都没有,因为它是给你自己的电视装的,广告没法投进自己家里。
资源占用
老电视最值钱的就是内存和存储,所以这点我用实测数据说话(主测试设备就是这台 Fire TV,1.6GB 内存):
| 状态 | 内存 (PSS) | CPU | 存储 |
|---|---|---|---|
| 空闲待命 | 63–72 MB(私有约 33 MB) | ≈ 0% | 安装包 5 MB + 数据 < 0.1 MB |
| 播放 1080p | ≈ 74 MB | 全机约 4–5% | — |
作为对比:Fire TV 自带的桌面本身就要 83MB。也就是说,LeanCast 比电视自带的桌面还省。
兼容性与限制
先说结论:Fire TV 实测通过,目前只有这一台实机。
架构上它是个纯 Kotlin、无原生库的 APK,minSdk 21(Android 5.0),一个安装包通吃 32 位和 64 位。所以理论上:
- 预期兼容:认证 Android TV / Google TV(索尼、TCL、飞利浦)、NVIDIA Shield、Amlogic/Rockchip 方案的盒子
- 实验性:允许安装第三方应用的国产智能电视(MIUI TV、酷开、海信安卓机型)
- 不支持:三星(Tizen)、LG(webOS)、华为智慧屏(HarmonyOS)——没有安卓应用运行时,神仙难救
发布到 V2EX 之后,很快收到一位索尼电视用户(Android 10)的反馈:投屏后只有声音没有画面。排查下来是个时序竞态——性能好的电视上,播放器实例的创建会比界面启动还晚,视频画面没来得及挂载。修复已经随 v0.2.1 发布,还在等他验证结果。
这种「用户反馈 → 修复 → 发版」的闭环,正是把它开源出来的原因之一:我一个人只有一台电视,但社区里有各种各样的电视。
写在最后
整个过程的分工大概是这样:我负责提需求、验收和偶尔的拍板,AI 负责编码、单元测试、真机测试,甚至自己唤醒电视。我真正写下的东西,只有需求描述和几轮「这里不对,改」。
有人说这不算编程。我倒觉得无所谓——最终交付物是一个 90 个单元测试、E2E 全绿、真实解决了自家痛点的开源项目。至于过程里是我写的还是 AI 写的,电视不关心,家里人也不关心。
如果你家也有一台吃灰的安卓电视或盒子,欢迎试用和反馈:
- 仓库:https://github.com/addozhang/leancast
- 下载:Releases 页面直接下 APK,当前 v0.2.1
- 兼容性反馈:仓库里有专门的 Issue 模板,帮你把设备加进支持矩阵



